当前位置: 首页 > news >正文

杭州餐饮 网站建设百度移动端点赞排名软件

杭州餐饮 网站建设,百度移动端点赞排名软件,广州洲聚网站开发,深圳罗湖企业网站目录 Java后端的登录、注册接口是怎么实现的 Java后端的登录接口是怎么实现的 Java后端的注册接口怎么实现#xff1f; 如何防止SQL注入攻击#xff1f; Java后端的登录、注册接口是怎么实现的 Java后端的登录接口是怎么实现的 Java后端的登录接口的实现方式有很多种 如何防止SQL注入攻击 Java后端的登录、注册接口是怎么实现的 Java后端的登录接口是怎么实现的 Java后端的登录接口的实现方式有很多种这里介绍其中一种常见的方式。 Cookie Session 方式用户输入用户名和密码前端将用户提交的用户名和密码发送到后端进行验证。如果验证通过后端会生成一个session id然后将session id 以及其他用户信息存储在服务端的session中。同时后端会将session id 返回给前端前端将session id 存储在cookie中。之后前端每次请求时都会带上cookie后端会根据cookie中的session id 来判断用户是否已经登录如果已经登录则返回用户信息否则返回未登录状态。 Token 方式用户输入用户名和密码前端将用户提交的用户名和密码发送到后端进行验证。如果验证通过后端会生成一个token然后将token 返回给前端。之后前端每次请求时都会带上token后端会根据token来判断用户是否已经登录如果已经登录则返回用户信息否则返回未登录状态。Token 方式相对于 Cookie Session 方式具有更好的可扩展性和更好的跨域支持。 基于spring bootmybatisvue结合 JWT 进行 token 的生成和验证后端代码可以按照以下步骤进行编写 添加依赖在pom.xml文件中添加spring-boot-starter-security和jjwt依赖。 配置Spring Security在Spring Security配置类中添加JWT过滤器用于生成和验证token。 编写登录接口在Controller中编写登录接口接收用户名和密码验证通过后生成token并返回给前端。 编写拦截器在拦截器中验证token的有效性如果token无效则返回错误信息。 编写注销接口在Controller中编写注销接口用于注销当前用户的token。 编写token生成工具类编写一个工具类用于生成和解析token。 编写用户认证逻辑编写用户认证逻辑用于验证用户的身份信息。 使用Spring Boot MyBatis JWT RestController RequestMapping(/api) public class LoginController {Autowiredprivate UserService userService;PostMapping(/login)public ResponseEntity? login(RequestBody User user) {User loginUser userService.login(user);if (loginUser ! null) {String token JWT.create().withAudience(loginUser.getId().toString()).sign(Algorithm.HMAC256(loginUser.getPassword()));return ResponseEntity.ok(token);} else {return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();}} }Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Autowiredprivate UserService userService;Overrideprotected void configure(HttpSecurity http) throws Exception {http.csrf().disable().authorizeRequests().antMatchers(/api/login).permitAll().anyRequest().authenticated().and().addFilter(new JWTAuthenticationFilter(authenticationManager())).addFilter(new JWTAuthorizationFilter(authenticationManager(), userService)).sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);}Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userService).passwordEncoder(passwordEncoder());}Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}Overridepublic void configure(WebSecurity web) throws Exception {web.ignoring().antMatchers(/swagger-ui.html, /swagger-resources/**, /v2/api-docs, /webjars/**);} }public class JWTAuthenticationFilter extends UsernamePasswordAuthenticationFilter {private AuthenticationManager authenticationManager;public JWTAuthenticationFilter(AuthenticationManager authenticationManager) {this.authenticationManager authenticationManager;setFilterProcessesUrl(/api/login);}Overridepublic Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {try {User user new ObjectMapper().readValue(request.getInputStream(), User.class);return authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword()));} catch (IOException e) {throw new RuntimeException(e);}}Overrideprotected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {User user (User) authResult.getPrincipal();String token JWT.create().withAudience(user.getId().toString()).sign(Algorithm.HMAC256(user.getPassword()));response.addHeader(Authorization, Bearer token);} }public class JWTAuthorizationFilter extends BasicAuthenticationFilter {private UserService userService;public JWTAuthorizationFilter(AuthenticationManager authenticationManager, UserService userService) {super(authenticationManager);this.userService userService;}Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {String header request.getHeader(Authorization);if (header null || !header.startsWith(Bearer )) {chain.doFilter(request, response);return;}UsernamePasswordAuthenticationToken authenticationToken getAuthentication(request);SecurityContextHolder.getContext().setAuthentication(authenticationToken);chain.doFilter(request, response);}private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request) {String token request.getHeader(Authorization);if (token ! null) {String userId JWT.require(Algorithm.HMAC256(userService.getById(Long.parseLong(JWT.decode(token.replace(Bearer , )).getAudience())).getPassword())).build().verify(token.replace(Bearer , )).getAudience().get(0);if (userId ! null) {User user userService.getById(Long.parseLong(userId));return new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());}return null;}return null;} }Service public class UserServiceImpl implements UserService, UserDetailsService {Autowiredprivate UserMapper userMapper;Overridepublic User login(User user) {User loginUser userMapper.getByUsername(user.getUsername());if (loginUser ! null new BCryptPasswordEncoder().matches(user.getPassword(), loginUser.getPassword())) {return loginUser;}return null;}Overridepublic User getById(Long id) {return userMapper.getById(id);}Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user userMapper.getByUsername(username);if (user null) {throw new UsernameNotFoundException(User not found with username: username);}return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), new ArrayList());Java后端的注册接口怎么实现 Java后端的注册接口的实现方式有很多种这里介绍其中一种常见的方式。 一般来说注册接口需要进行数据库的基本操作而且是前后端分离式开发。总的来说就是首先进行数据库的设计然后根据数据库进行编写服务端API接口接着来到客户端或移动端进行登录与注册的界面设计接收服务端提供的数据并显示在界面上。 以下是一个简单的注册接口实现方式 POST请求方式用户输入用户名和密码前端将用户提交的用户名和密码发送到后端进行验证。如果验证通过后端会将用户信息存储在数据库中。同时后端会将用户信息返回给前端前端将用户信息存储在本地。之后前端每次请求时都会带上用户信息后端会根据用户信息来判断用户是否已经注册如果已经注册则返回用户信息否则返回未注册状态。 如何防止SQL注入攻击 SQL注入攻击是一种常见的网络攻击方式它可以通过恶意的SQL语句来篡改数据库或者获取敏感信息。以下是一些防止SQL注入攻击的方法 使用参数化查询使用参数化查询可以将用户输入的数据与SQL语句分离从而避免了SQL注入攻击。在Java中可以使用PreparedStatement类来实现参数化查询。 过滤用户输入在用户输入数据之前对数据进行过滤和验证确保数据的合法性和安全性。例如可以使用正则表达式来限制用户输入的字符集。 使用ORM框架ORM框架可以自动将用户输入的数据转换为SQL语句从而避免了手动编写SQL语句的风险。例如Hibernate和MyBatis都是常用的ORM框架。 限制数据库用户权限将数据库用户的权限限制在最小范围内只允许其执行必要的操作可以减少SQL注入攻击的危害。 使用存储过程存储过程可以将SQL语句封装在一个过程中从而避免了手动编写SQL语句的风险。此外存储过程还可以提高SQL语句的执行效率。
http://www.yingshimen.cn/news/3393/

相关文章:

  • 微信网站程序0511网站
  • 网站上传程序流程网站建设小程序南宁
  • 金寨县重点工程建设管理局网站宁波建设工程信息网
  • 建设集团网站价格深圳营销型网站建设公司
  • 德尔普的网站建设的价格做搜狗网站优化
  • 建网站要wordpress前端登录页面
  • 买了网站 怎么做呢专题类网站
  • 网站开发实战asp制作视频教程无需注册免费的网站
  • 美工做的好的网站网络科技公司一般做什么
  • 婚恋网站需求分析小程序咋做
  • 公司域名更改 网站怎么做提示中国建设银行官网站信用卡管理
  • 网站可分为哪两种类型网站 站长统计代码
  • 品牌形象网站源码长春火车站到长春机场大巴时刻表
  • 组建个人网站北京品牌网站建设公司排名
  • 怎样做网站反链宁德公司做网站
  • 网站首页设计效果图学vue可以做pc网站
  • 手机微网站开发的目的和意义不懂代码可以做网站吗
  • 网站开发维护运维网站建设鼠标移动变颜色
  • 网站开发前端简历公司简历模板范文填写
  • 网站开发需求书模板中山手机网站制作哪家好
  • 佛山网站建设收费标准个人网站模板制作教程
  • .net网站开发源码免费下ppt课件的网站
  • 卢沟桥做网站的公司商城微网站如何做
  • 芜湖做网站的公司番禺网页设计
  • 泉州市做网站外国网站打开慢怎么办
  • 盐城专业做网站做外贸网站推广
  • 网站 单页网站和自媒体都可以做
  • 哪些网站可以做ppt自适应网站做多大尺寸
  • 哪里有网站app制作东莞招投标服务中心
  • 番禺做网站要多少钱wordpress文章视频