我正在使用 Spring Security 通过 OpenID 进行身份验证的应用程序。当用户登录时,一些权限会加载到他的会话中。
我拥有完全权限的用户,可以修改其他用户的权限(撤销、添加角色)。我的问题是,如何动态更改用户会话权限? (不能使用 SecurityContextHolder 因为我想更改另一个用户会话)。
简单的方法:使用户会话无效,但是如何呢?更好的方法:使用新权限刷新用户会话,但是如何?
原文由 Aure77 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在使用 Spring Security 通过 OpenID 进行身份验证的应用程序。当用户登录时,一些权限会加载到他的会话中。
我拥有完全权限的用户,可以修改其他用户的权限(撤销、添加角色)。我的问题是,如何动态更改用户会话权限? (不能使用 SecurityContextHolder 因为我想更改另一个用户会话)。
简单的方法:使用户会话无效,但是如何呢?更好的方法:使用新权限刷新用户会话,但是如何?
原文由 Aure77 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
2 回答423 阅读✓ 已解决
2 回答502 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
3 回答6.7k 阅读
2 回答703 阅读✓ 已解决
如果您需要动态更新登录用户的权限(当这些更改时,无论出于何种原因),当然不必注销和登录,您只需要重置
Authentication
对象(安全令牌) 在春季SecurityContextHolder
。例子: