Spring Security 注册后自动登录

通常,注册后会跳转到登录页面,但是对一些用户来说又要输入账号密码,比较麻烦。

一种比较好的体验就是注册后,自动登录。

具体代码如下

  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
言曌

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 憧憬点滴记忆

      可以,