通常,注册后会跳转到登录页面,但是对一些用户来说又要输入账号密码,比较麻烦。
一种比较好的体验就是注册后,自动登录。
具体代码如下
一种比较好的体验就是注册后,自动登录。
具体代码如下
- @Autowired
- protected AuthenticationManager authenticationManager;
- /**
- * 注册提交
- * @param user
- * @return
- */
- @PostMapping("/register")
- public String registerUser(User user,HttpServletRequest request) {
- //添加用户-角色关系
- List<Authority> authorities = new ArrayList<>();
- authorities.add(authorityService.getAuthorityById(ROLE_USER_AUTHORITY_ID));
- user.setAuthorities(authorities);
- //添加用户
- userService.saveUser(user);
- //进行授权登录
- UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword());
- try{
- token.setDetails(new WebAuthenticationDetails(request));
- Authentication authenticatedUser = authenticationManager.authenticate(token);
- SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
- request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, SecurityContextHolder.getContext());
- } catch( AuthenticationException e ){
- System.out.println("Authentication failed: " + e.getMessage());
- return "redirect:/register";
- }
- //跳到首页
- return "redirect:/";
- }
2019年11月02日 04:28:58
request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, SecurityContextHolder.getContext()); 最后一步没必要吧!SecurityContextPersistenceFilter中会进行这一步的。
2018年02月23日 21:11:44
可以,