我得到了一个带有用户管理的简单的 Spring Security 应用程序。
管理员应该能够在数据库上创建/更新/删除用户(通过 hibernate)。
如果更新了用户,我将重新加载当前登录的用户的身份验证。这是通过以下代码完成的(根据this https://stackoverflow.com/a/30674697/1391131例子):
SecurityContextHolder.getContext().setAuthentication(updatedAuthentication);
我的问题是:
我能做些什么如果用户被删除?如果我删除一个用户,已经活动会话保持活动状态我不知道如何更新它们。我仍然可以导航到以前能够访问的每个页面。
有没有办法告诉 spring 会话应该重新验证或类似的东西?我错过了什么重要的事情吗?
对于每个请求,您应该检查数据库中的用户是否存在。
脚步 :
- 从会话中获取用户ID,检查它是否在数据库中。
- 如果数据库中没有,则会话无效并再次重定向到登录页面。
- 将上述两个步骤包装在一个方法中,并在每个请求上调用它。 (如果有通用方法,请使用该方法或创建一个监听器)
您也可以检查以下链接是否有帮助。http://forum.spring.io/forum/spring-projects/security/35809-how-to-let-admin-to-force-user-to-logout 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 http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#list-authenticated-principals
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)