我正在使用 spring security 并实现了 UserDetailsService,它完美地处理了我的用户登录过程。
问题是这样的: 是否有一种标准方法可以根据每个请求从数据库中检查用户状态,这样如果用户的帐户状态更改为“锁定”或者他的角色在他仍然登录时发生更改,应用程序会阻止他继续他的工作。
这里的问题是,我的自定义 UserDetailsService 类中的“public UserDetails loadUserByUsername(String arg0)”仅在登录过程中被调用,并且 userDetails 对象保留自登录过程执行以来的数据和 userDetails 信息不新鲜。
我可以通过一些解决方法来解决这个问题,比如从数据库中获取用户对象并通过监听器检查其状态。但是我觉得spring security可能对这种情况有一个通用的解决方案。
请帮忙。谢谢。
最佳答案
基本思想是使用自定义 SecurityContextRepository
,它丢弃保存在 http session 中的用户详细信息。
有关完整示例和工作项目,请在此处查看我对类似问题的回答:Spring Security logoff a user while runtime
关于java - 如何在 spring security 中检查每个请求的用户状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26725316/