【发布时间】:2017-05-20 02:20:23
【问题描述】:
我们有一个场景,我们有一系列应用程序,所有应用程序都使用 spring-session (w/Redis),用户可以多次登录以访问不同的应用程序。
如果管理员修改用户以添加新角色(例如,访问新应用)(GrantedAuthority),我们需要将其反映在所有用户的活动会话中。
我认为,问题在于 SecurityContextHolder 使用 ThreadLocal 存储来存储 SecurityContext(它又持有 GrantedAuthorities)。
我尝试与会话存储库交互并使用它来更新会话信息,但由于上述 TL 存储,它不会反映在应用程序中。
是否有一种通用的模式/策略以这种方式将更新传播到角色信息?
谢谢。
【问题讨论】:
-
澄清一下,您的所有应用程序是否通过共享同一个 Redis 会话存储来使用相同的会话信息?或者您正在使用像 OAuth2 这样的集中式身份验证解决方案?
-
我们使用的是同一个共享 Redis 会话存储。
标签: spring session spring-security roles spring-session