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

Java 如何在spring security中检查每个请求的用户状态,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我使用的是spring安全性,我实现了UserDetailsService,它完美地处理了我的用户登录过程 问题是: 是否有一种标准方法可以在每次请求时从数据库检查用户状态,这样,如果用户的帐户状态更改为“已锁定”,或者在用户仍然登录时其角色发生更改,则应用程序将阻止用户继续工作 这里的问题是,我的自定义UserDetails服务类中的“public UserDetails loadUserByUsername(字符串arg0)”仅在登录过程中调用,并且UserDetails对象保留数据,因为登

我使用的是spring安全性,我实现了UserDetailsService,它完美地处理了我的用户登录过程

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

这里的问题是,我的自定义UserDetails服务类中的“public UserDetails loadUserByUsername(字符串arg0)”仅在登录过程中调用,并且UserDetails对象保留数据,因为登录过程已执行,UserDetails信息不新鲜

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


请帮忙。谢谢。

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


有关完整示例和工作项目,请查看我在此处对类似问题的回答:

您可以编写一个筛选器,用于映射所有请求(登录请求除外),并检查用户是否已锁定。感谢您提供的解决方案。实际上,我也想到了这一点,但我在想,也许通过在spring security中设置一个标志或属性,我可以强制应用程序按需加载用户详细信息。我不认为你可以只使用一个标志来管理它,你需要在
过滤器链中添加一个过滤器。如果您能探索一下
记住我
过滤器是如何处理的,您可能会有一些想法。没问题。祝你好运