2

我已经成功使用spring security来登录用户。但问题是,现在在我的网页上,当创建新用户时,他/她必须再次返回登录页面才能登录,这当然使用弹簧安全性。有没有办法在创建新用户后立即使用 Spring Security 自动登录用户?

4

2 回答 2

5

做这个

UserDetails userDetails = userDetailsService.loadUserByUsername(username);
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken (userDetails, password2, userDetails.getAuthorities());
authenticationManager.authenticate(auth);
if(auth.isAuthenticated()) {
    SecurityContextHolder.getContext().setAuthentication(auth);
}
于 2013-08-12T22:11:15.793 回答
2

我从来没有做过,但我认为你应该做文档中描述的事情。

一旦请求通过身份验证,身份验证通常将存储在由正在使用的身份验证机制的 SecurityContextHolder 管理的线程本地 SecurityContext 中。通过创建 Authentication 实例并使用代码,可以在不使用 Spring Security 的身份验证机制之一的情况下实现显式身份验证

SecurityContextHolder.getContext().setAuthentication(anAuthentication);

请注意,除非 Authentication 将 authenticated 属性设置为 true,否则它仍将由遇到它的任何安全拦截器(用于方法或 Web 调用)进行身份验证。

于 2012-05-26T10:11:21.070 回答