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

标签 java spring spring-mvc spring-security

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

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

这里的问题是,我的自定义 UserDetailsS​​ervice 类中的“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/

相关文章:

java - 配置 Spring WebClient 代理时如何更改 DEFAULT_CONNECT_TIMEOUT_MILLIS ?

spring - 使用 RestTemplate 时如何配置内部 Jackson 映射器?

java.lang.ClassCastException : java. util.Vector 无法转换为 org.ksoap2.serialization.SoapPrimitive

java - @Qualifier 在 spring 5.0.6 中不起作用

java - 刚刚导入我的图像,需要右侧的子面板

Spring 注入(inject) : @MockBean @Repository is not injected

java - spring框架内置html/css/javascript输出编码?

java - <form :errors> tag in my Spring 3. 0.3 web MVC 应用程序未呈现验证错误

spring - 使用 spring 3.0.0 和 tomcat 提供静态资源

java - 在 Java 中重用 SecretKey