我正在使用spring安全性,我实现了UserDetailsService,它完美地处理了我的用户登录过程。
问题是: 是否有标准方法可以在每个请求中检查数据库中的用户状态,以便在用户的帐户状态更改为“已锁定”状态时为#34;或者他的角色在他仍然登录时被更改,该应用程序阻止他继续他的工作。
这里的问题是"公共UserDetails loadUserByUsername(String arg0)"在我的自定义UserDetailsService类中,只在登录过程中调用,而userDetails对象保存数据,因为登录过程已执行,而userDetails信息并不新鲜。
我可以通过一些解决方法解决此问题,例如从数据库获取用户对象并通过侦听器检查其状态。但我觉得春季安全可能会解决这种情况。
请帮忙。感谢。
答案 0 :(得分:1)
基本思路是使用自定义SecurityContextRepository
,它会丢弃在http会话中保存的用户详细信息。
如需完整示例和工作项目,请在此处查看我对类似问题的回答:Spring Security logoff a user while runtime