如何在spring security中检查每个请求的用户状态

时间:2014-11-03 23:42:26

标签: java spring spring-mvc spring-security

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

问题是: 是否有标准方法可以在每个请求中检查数据库中的用户状态,以便在用户的帐户状态更改为“已锁定”状态时为#34;或者他的角色在他仍然登录时被更改,该应用程序阻止他继续他的工作。

这里的问题是"公共UserDetails loadUserByUsername(String arg0)"在我的自定义UserDetailsS​​ervice类中,只在登录过程中调用,而userDetails对象保存数据,因为登录过程已执行,而userDetails信息并不新鲜。

我可以通过一些解决方法解决此问题,例如从数据库获取用户对象并通过侦听器检查其状态。但我觉得春季安全可能会解决这种情况。

请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

基本思路是使用自定义SecurityContextRepository,它会丢弃在http会话中保存的用户详细信息。

如需完整示例和工作项目,请在此处查看我对类似问题的回答:Spring Security logoff a user while runtime