Spring Security 注册后自动登录

avatar 2018年02月22日19:48:28 8 7791 views
博主分享免费Java教学视频,B站账号:Java刘哥
通常,注册后会跳转到登录页面,但是对一些用户来说又要输入账号密码,比较麻烦。 一种比较好的体验就是注册后,自动登录。 具体代码如下
  1. @Autowired
  2.     protected AuthenticationManager authenticationManager;
  3.     /**
  4.      * 注册提交
  5.      * @param user
  6.      * @return
  7.      */
  8.     @PostMapping("/register")
  9.     public String registerUser(User user,HttpServletRequest request) {
  10.         //添加用户-角色关系
  11.         List<Authority> authorities = new ArrayList<>();
  12.         authorities.add(authorityService.getAuthorityById(ROLE_USER_AUTHORITY_ID));
  13.         user.setAuthorities(authorities);
  14.        //添加用户
  15.         userService.saveUser(user);
  16.         //进行授权登录
  17.         UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword());
  18.         try{
  19.             token.setDetails(new WebAuthenticationDetails(request));
  20.             Authentication authenticatedUser = authenticationManager.authenticate(token);
  21.             SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
  22.             request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, SecurityContextHolder.getContext());
  23.         } catch( AuthenticationException e ){
  24.             System.out.println("Authentication failed: " + e.getMessage());
  25.             return "redirect:/register";
  26.         }
  27.         //跳到首页
  28.         return "redirect:/";
  29.     }
  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:2   待审核评论数:0
  1. avatar keller

    request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, SecurityContextHolder.getContext()); 最后一步没必要吧!SecurityContextPersistenceFilter中会进行这一步的。

  2. avatar 憧憬点滴记忆

    可以,