Rao*_*nav 8 session spring spring-mvc spring-security
我是Spring MVC和Spring Security的新手.我使用Spring安全性和MVC执行了登录和注册功能.我无法找到任何会话管理方式.
我想访问所有页面上的一些用户详细信息,如(电子邮件,姓名,ID,角色等).我想将这些保存到会话对象,以便我可以在任何页面上获取这些.
我在春季会议的方式如下
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
auth.getPrincipal();
Run Code Online (Sandbox Code Playgroud)
但是从这个返回的对象我只能得到用户名和密码的详细信息.
但我需要访问该用户的更多细节.
请帮我解决这个问题.提前致谢.
我想让我的模型类对象从SecurityContextHolder.getContext()返回.getAuthentication().getDetails(); 为此,我需要配置.
此致,Pranav
您需要使您的模型类实现UserDetails接口
class MyUserModel implements UserDetails {
//All fields and setter/getters
//All interface methods implementation
}
Run Code Online (Sandbox Code Playgroud)
然后在你的弹簧控制器中你可以这样做:
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Object myUser = (auth != null) ? auth.getPrincipal() : null;
if (myUser instanceof MyUserModel) {
MyUserModel user = (MyUserModel) myUser;
//get details from model object
}
Run Code Online (Sandbox Code Playgroud)
您可以使用它来获取UserDetails(或任何具有您的自定义详细信息的实现)。
UserDetails userDetails = SecurityContextHolder.getContext().getAuthentication().getDetails();
Run Code Online (Sandbox Code Playgroud)
如果没有可用的,您可以从 加载用户详细信息UserDetailsService。
在这两种情况下,我认为您必须自己将它们保存在会话范围 bean 中。
| 归档时间: |
|
| 查看次数: |
21606 次 |
| 最近记录: |