java - 向 Spring MVC session 添加新属性

标签 java spring session spring-mvc spring-security

在我的项目中,我使用 Spring Security。为了获取当前用户名,我正在访问 SpringContextHolder

UserDetails principal = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
username = principal.getUsername()

使用org.springframework.security.core.userdetails.UserDetails对象我只能检索有限的信息,如用户名、密码、角色等。如果我想检索用户ID怎么办?我是否需要每次都调用数据库来获取与用户名对应的更多用户详细信息?我不能为 session 对象设置属性吗?在大多数帖子中,解决方案是通过使用 ModelAndView 对象提出的。但就我而言, View 层不需要 SessionAttributes,但业务逻辑层也需要。

主要是我想以某种方式保留 UserID 和 ClientID 以便随时随地访问。

最佳答案

您可以编写自定义 UserDetails 和 UserDetailsS​​ervice

Spring Security: custom userdetails

Custom UserDetailsService example for spring 3 security

关于java - 向 Spring MVC session 添加新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22390547/

相关文章:

java - 如何在 jboss 数据源 url 中指定 sql server 的当前模式?

java - JAR中有多个可运行类,如何运行它们?

node.js - 表示 cookieSession 和 Mongoose : how can I make request. session.user 是 Mongoose 模型吗?

java - 如何在 Spring 测试中的@Test方法之前只填充一次数据库?

java - 用户实体上的某些 REST 操作的 com.fasterxml.jackson.databind.exc.InvalidDefinitionException

session - 是否可以将 HTTP header 添加到 Socket.io 握手中?

java - 使用 SessionRegistry 获取登录用户

java - 静态变量在Java编译时出错,在C中一次性内存分配

java - 创建实体时添加静态属性数据

java - 所有提供者之后的 Spring Security java.lang.StackOverflowError 异常