我得到了一个带有用户管理的简单弹簧安全应用程序。 管理员应该能够在数据库上创建/更新/删除用户(通过休眠)。
如果用户已更新,我正在重新加载当前登录用户的身份验证。这是通过以下代码完成的(根据this示例):
SecurityContextHolder.getContext().setAuthentication(updatedAuthentication);
我的问题是: 如果用户被删除,我该怎么办 ?如果我删除用户,活动会话已保持活动状态,我不知道如何更新它们。我仍然可以导航到我之前能够访问的每个页面。
有没有办法告诉spring会话应该重新验证还是类似的?我错过了什么重要的事吗?
答案 0 :(得分:1)
在每个请求中,您应该检查数据库中是否存在用户。 步骤:
如果有帮助,您也可以查看以下链接。 http://forum.spring.io/forum/spring-projects/security/35809-how-to-let-admin-to-force-user-to-logout
答案 1 :(得分:0)
从Spring Security 3.0开始,加载和存储安全上下文的工作现在被委托给一个单独的策略接口
您可以提供NullSecurityContextRepository以避免存储安全上下文信息。
我做了类似的事情:
@EnableWebSecurity
public class CustomSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// Other security configuration...
http.securityContext().securityContextRepository(new NullSecurityContextRepository());
}
}