注册之后如何完成自动登录呢?

来源:5-7 开发微信登录

jiiiiiin

2018-09-07

也就是不启用ConnectionSignUp组件,授权完成还是渲染注册页面,在注册提交确认接口,完成业务系统的用户注册和spring social和业务系统用户关系绑定之后,不需要再让用户进行手动登录,而是直接完成登录流程,这个从后端层面要如何做?

  @PostMapping("/user/auth/register")
    public String register(User user, HttpServletRequest request, HttpServletResponse response) {
        // TODO 待写注册或者绑定逻辑(绑定需要查询应用用户的userid,通过授权用户信息,授权用户信息在providerSignInUtils中可以获取)
        // 不管是注册用户还是绑定用户,都会拿到一个用户唯一标识。
        String userId = user.getUsername();
        // 真正让业务系统用户信息和spring social持有的授权用户信息进行绑定,记录`UserConnection`表
        providerSignInUtils.doPostSignUp(userId, new ServletWebRequest(request));
//		appSingUpUtils.doPostSignUp(new ServletWebRequest(request), userId);
        // !注册成功还需要用户在重新登录才能进来,目前没有找到直接帮用户进行ss登录的方法
        final SavedRequest savedRequest = requestCache.getRequest(request, response);
        if (savedRequest != null) {
            final String originalReqUrl = savedRequest.getRedirectUrl();
            return "redirect:" + originalReqUrl;
        } else {
            return "redirect:/";
        }
    }

即在这个接口如何直接完成登录?

写回答

1回答

JoJo

2018-09-07

UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(user, "123456", AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_USER"));

SecurityContextHolder.getContext().setAuthentication(authentication);

类似这样,往安全上下文里直接放一个认证过的Authentication

0
2
jiiiiiin
谢谢老师 我先试试,先把课听完,有不懂的在请教
2018-09-10
共2条回复

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全

2662 学习 · 1561 问题

查看课程