当前位置: 首页 > 知识库问答 >
问题:

从Spring Security中的会话获取用户详细信息

卢英范
2023-03-14

我是Spring MVC和Spring Security的新手。我已经使用Spring Security和MVC执行了登录和注册功能。我找不到任何会话管理的方法。

我想访问所有页面上的一些用户信息,如(电子邮件,姓名,id,角色等)。我想将这些保存到会话对象中,这样我就可以在任何页面上获取这些内容。

我在Spring的会议得到以下方式

Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
auth.getPrincipal();

但是从这个返回的对象中,我只能得到用户名和密码的详细信息。

但我需要访问该用户的更多详细信息。

  • 有没有办法通过将其保存到会话并在jsp页面上获取来执行此操作?
  • 或者说,在Spring是否有任何OOTB方法可以完成这项工作?

请帮助我找到解决方案。提前谢谢。

我想让我的模型类对象从SecurityContextHolder.getContext()返回

问候,普拉纳夫

共有2个答案

从开济
2023-03-14

您可以使用它来获取User详细信息(或具有您的自定义详细信息的任何实现)。

UserDetails userDetails = SecurityContextHolder.getContext().getAuthentication().getDetails();

如果没有可用的,您可以从UserDetailsService加载用户详细信息。

在这两种情况下,我认为您必须将它们保存在会话范围bean中。

戚翼
2023-03-14

您需要使模型类实现用户详细信息接口

class MyUserModel implements UserDetails {
    //All fields and setter/getters

    //All interface methods implementation
}

然后在您的Spring控制器中,您可以这样做:

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        
}
 类似资料:
  • 我有一个struts2应用程序。在我的应用程序中,我使用 这边走。 提前致谢

  • 如何使用Keycloak restendpoint获取用户在Keycloak中的最后登录会话详细信息?

  • Amazon标识管理iam=Amazon标识管理客户端Builder.standard()。US_EAST_1)。 有人能告诉我怎么做吗? 我试图在下面的程序中列出一个用户的标签,但我得到了下面的错误:我们计算的请求签名与您提供的签名不匹配。检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅维修文档。 公共类ListUserTags{ }

  • 目前,我正在使用以下内容将用户登录到我的应用程序中。然而,我想使用一个角函数来实际执行登录。为此,我想创建一个Rest网络服务来进行身份验证,但是我在SO上看到的所有示例都使用我认为被贬低的用户。我还希望该服务返回有关用户的信息。 我要问的是如何将MyUserDetailsService更改为用作登录的restful服务,或者如何创建一个可用于登录的服务,该服务将在登录后返回用户对象。 这是我的a

  • 我在网上搜索这个问题的解决方案,但没有找到任何有效的解决方案。我正在尝试设置基本的Spring Boot OAuth2授权提供程序和客户端。 我按照官方的Spring Boot指令,创建了Facebook和GitHub的单点登录。然后按照说明创建安全的Spring Boot Web应用程序。 以下是记录的内容: 信息2800---[nio-9999-exec-3]O.S.B.A.S.O.R.Use