我有一个简单的带有用户管理的 spring 安全应用程序。 管理员应该能够在数据库上创建/更新/删除用户(通过 hibernate )。
如果更新了用户,我将重新加载当前登录用户的身份验证。这是通过以下代码完成的(根据 this 示例):
SecurityContextHolder.getContext().setAuthentication(updatedAuthentication);
我的问题是: 如果用户被删除我该怎么办?如果我删除一个用户,已经活跃的 session 保持活跃并且我不知道如何更新它们。我仍然可以导航到之前能够访问的每个页面。
有没有办法告诉 spring 应该重新验证 session 或类似的东西?我错过了什么重要的事情吗?
最佳答案
在每个请求中,您应该检查您的数据库中的用户是否存在。 步骤:
- 从 session 中获取用户 ID,检查它是否在数据库中。
- 如果不在数据库中,则使 session 无效并再次重定向到登录页面。
- 将上述两个步骤包装在一个方法中,并在每次请求时调用它。 (如果有通用方法,请使用该方法或创建 e Listener)
如果有帮助,您也可以查看以下链接。 http://forum.spring.io/forum/spring-projects/security/35809-how-to-let-admin-to-force-user-to-logout
关于java - Spring Security 删除用户 - session 仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38295556/