当前位置: 首页 > 知识库问答 >
问题:

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

牛骞仕
2023-03-14

我正在使用Spring Security,我实现了UserDetailsService,它完美地处理了我的用户登录过程。

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

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

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

请帮忙。谢谢

共有1个答案

秋阳荣
2023-03-14

基本思想是使用自定义SecurityContextRepository,它丢弃保存在超文本传输协议会话中的用户详细信息。

对于一个完整的示例和一个工作项目,请查看我对类似问题的回答:Spring Security在运行时退出用户

 类似资料:
  • 问题内容: 似乎只有在ajax请求能够从服务器获得某些响应时,才会触发成功,错误和完整的回调。 因此,如果我关闭服务器,则不会执行以下错误回调,并且请求将以静默方式失败。 当根本无法访问服务器时,抛出错误的最佳方法是什么。 编辑-从我尝试过的内容来看,似乎jQuery的内置错误处理不适用于JSONP或dataType:“ script”。因此,我将尝试设置手动超时。 编辑-做了一些进一步的研究,看

  • 我正在Postman中编写测试,我有多个请求分组如下: > 某些测试标题: > 创建用户(一组“预请求”): 发送一些创建用户所需的请求,这些请求是运行测试所必需的 对已创建用户的一些操作(这里我正在测试测试标题中的内容) 一个或多个请求 < li >创建用户(一组“预先请求”,与测试1中相同。): < ul > < li >发送创建用户、运行测试所需的一些请求 一个或多个请求 总的来说,当我想测

  • 我想使用 null 我想创建自定义组权限,只问我一个请求,只给我一个响应。 谢谢

  • 我们正在尝试使用Drool作为我们的规则引擎服务。我们到目前为止所做的如下 部署的工作台7.2.final 已部署的KIE服务器7.2.0。final 配置了一些数据对象、规则,将更改部署到KIE服务器,我们可以使用rest API执行规则 无状态会话满足了我们的大部分需求(给出一组数据,执行规则并返回数据,仅此而已)。但是使用无状态时,我们必须牺牲Drools有状态会话提供的许多重要特性。 我们

  • 我的方法正确吗?在正文中发送凭据>接收响应(成功)>登录成功>将令牌存储在会话存储中并将其设置在头中>会话过期时注销 存储jwt

  • 问题内容: 我想检查服务器端是否对我的php页面的请求是ajax请求。 我看到了两种方法可以做到这一点: 第一种方法:在请求中发送一个参数,该参数告诉页面这是AJAX请求(= ) mypage.php: 第二种方式:将标头设置为: 客户端js: mypage.php: 事实是,这两种方法很容易被黑,因此检查我是否收到这样的AJAX请求并不安全。 如何检查我是否收到AJAX请求? 问题答案: 没有确