gpt4 book ai didi

spring-mvc - 使用 spring security 以编程方式登录用户

转载 作者:行者123 更新时间:2023-12-03 05:44:33 24 4
gpt4 key购买 nike

相反:How to manually log out a user with spring security?

在我的应用程序中,我有注册新用户屏幕,它会发布到一个 Controller ,该 Controller 在数据库中创建一个新用户(并进行一些明显的检查)。然后我希望这个新用户自动已登录...我想要这样的东西:

SecurityContextHolder.getContext().setPrincipal(MyNewUser);

编辑好吧,我几乎已经根据 How to programmatically log user in with Spring Security 3.1 的答案实现了

 Authentication auth = new UsernamePasswordAuthenticationToken(MyNewUser, null);
SecurityContextHolder.getContext().setPrincipal(MyNewUser);

但是,部署后,jsp 无法访问我的 MyNewUser.getWhateverMethods(),而在正常登录过程中却可以访问。正常工作但在像上面一样登录时抛出错误的代码如下:

<sec:authentication property="principal.firstname" /> 

最佳答案

在我的 Controller 中,我有这个,它可以正常登录用户:

Authentication auth = 
new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());

SecurityContextHolder.getContext().setAuthentication(auth);

其中 user 是新创建的自定义用户对象(实现 UserDetails)。 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;
}

关于spring-mvc - 使用 spring security 以编程方式登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7900994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com