如何在Spring Security中检查每个请求的用户状态

Sar*_*aro 6 java spring spring-mvc spring-security

我正在使用 spring security 并实现了 UserDetailsS​​ervice ,它完美地处理我的用户登录过程。

问题是这样的:是否有一种标准方法可以在每个请求上从数据库检查用户状态,以便如果用户的帐户状态更改为“锁定”或他的角色在他仍然登录时发生更改,应用程序会阻止他继续他的工作。

这里的问题是,我的自定义 UserDetailsS​​ervice 类中的“public UserDetails loadUserByUsername(String arg0)”仅在登录过程中调用,并且 userDetails 对象自登录过程执行以来一直保留数据,并且 userDetails 信息不新鲜。

我可以通过一些解决方法来解决这个问题,例如从数据库获取用户对象并通过侦听器检查其状态。但我觉得spring security可能对这种情况有一个通用的解决方案。

请帮忙。谢谢。

Kam*_*kol 1

基本思想是使用一个自定义的方法SecurityContextRepository来丢弃保存在 http 会话中的用户详细信息。

对于完整的示例和工作项目,请查看我对类似问题的回答:Spring Security logoff a user while running