其相反:如何使用 Spring Security 手动注销用户? https://stackoverflow.com/q/5727380/106261
在我的应用程序中我有注册新用户屏幕,它发布到一个控制器,该控制器在数据库中创建一个新用户(并进行一些明显的检查)。然后我希望这个新用户自动登录......我有点想要这样的东西:
SecurityContextHolder.getContext().setPrincipal(MyNewUser);
Edit好吧,我几乎已经根据答案实施了如何使用 Spring Security 3.1 以编程方式登录用户 https://stackoverflow.com/q/7614541/106261
Authentication auth = new UsernamePasswordAuthenticationToken(MyNewUser, null);
SecurityContextHolder.getContext().setPrincipal(MyNewUser);
但是,部署后jsp无法访问我的MyNewUser.getWhateverMethods()
而当遵循正常登录过程时就会出现这种情况。正常工作但在登录时抛出错误的代码如下:
<sec:authentication property="principal.firstname" />
在我的控制器中我有这个,它可以让用户登录像平常一样 :
Authentication auth =
new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(auth);
其中 user 是新创建的自定义用户对象(实现 UserDetails)。这getAuthorities() http://docs.spring.io/autorepo/docs/spring-security/3.2.7.RELEASE/apidocs/org/springframework/security/core/userdetails/UserDetails.html#getAuthorities()方法执行此操作(只是因为我的所有用户都具有相同的角色):
public Collection<GrantedAuthority> getAuthorities() {
//make everyone ROLE_USER
Collection<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
GrantedAuthority grantedAuthority = new GrantedAuthority() {
//anonymous inner type
public String getAuthority() {
return "ROLE_USER";
}
};
grantedAuthorities.add(grantedAuthority);
return grantedAuthorities;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)