java - Spring Security 删除用户 - session 仍然有效

标签 java spring spring-mvc session spring-security

我有一个简单的带有用户管理的 spring 安全应用程序。 管理员应该能够在数据库上创建/更新/删除用户(通过 hibernate )。

如果更新了用户,我将重新加载当前登录用户的身份验证。这是通过以下代码完成的(根据 this 示例):

SecurityContextHolder.getContext().setAuthentication(updatedAuthentication);

我的问题是: 如果用户被删除我该怎么办?如果我删除一个用户,已经活跃的 session 保持活跃并且我不知道如何更新它们。我仍然可以导航到之前能够访问的每个页面。

有没有办法告诉 spring 应该重新验证 session 或类似的东西?我错过了什么重要的事情吗?

最佳答案

在每个请求中,您应该检查您的数据库中的用户是否存在。 步骤:

  1. 从 session 中获取用户 ID,检查它是否在数据库中。
  2. 如果不在数据库中,则使 session 无效并再次重定向到登录页面。
  3. 将上述两个步骤包装在一个方法中,并在每次请求时调用它。 (如果有通用方法,请使用该方法或创建 e Listener)

如果有帮助,您也可以查看以下链接。 http://forum.spring.io/forum/spring-projects/security/35809-how-to-let-admin-to-force-user-to-logout

另一个有用的链接是 http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#list-authenticated-principals

关于java - Spring Security 删除用户 - session 仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38295556/

相关文章:

java - 如何在 Java 中 12 小时后触发/安排事件

java - 在没有 ChannelFuture 的情况下写入 Netty channel

java - 在 Stripes 中使用 MockRoundtrip 和 Guice

data-binding - Grails 绑定(bind)集合枚举

spring-mvc - Spring 缓存中的错误?为什么list.addAll会对结果产生影响?

java - 将重复的键插入 HashMap

java - 在应用程序中设置应用程序特定属性

java - 我应该如何在 Spring boot 中配置 httpMessageConverters 以将消息转换为所需的格式?

java - 如何关闭额外的日志记录?

spring - 如何让Spring MVC返回CSV像返回JSON一样方便