spring - 是否可以使 spring 安全 session 无效?

标签 spring tomcat spring-mvc spring-security

我正在使用 Tomcat 6.0.32,Spring Security 3.0.5

在我的网络应用程序中,一些用户可以更改其他用户的权限。发生这种情况时,我想使权限已更改的用户的任何 session 无效。这可能吗?如果可能的话如何?

最佳答案

如果不求助于特定于容器的 API,您通常无法在更改用户帐户信息后立即使用户 session 无效,因为访问 HttpSession 的唯一方法是通过 HttpServletRequest 对象。

相反,您可以将用户名缓存在内存存储中,并在过滤器或自定义 AccessDecisionVoter 中查询它。在用户表中使用标志并不是一个好主意,因为标志本质上是暂时的(在服务器重新启动后它是无关紧要的)并且最好避免对每个请求的数据库查询性能影响。

有一个 blog article on using custom voters对于这种事情。它已经过时了,但一般方法是合理的。

另一种方法是使用 Spring Security 的 SessionRegistry,它是 session 管理功能的一部分。通常这用于限制用户可以拥有的 session 数,但也可以用于 list currently authenticated users或将他们的 session 标记为过期。

重新加载用户的权限而不是完全注销也可能是一个想法。

关于spring - 是否可以使 spring 安全 session 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8478188/

相关文章:

java - 如何在运行时 Spring 3 MVC 上设置系统属性

java - 使用 Spring MVC 从本地路径删除图像

java - ManyToMany映射(辅助表)+额外字段+复合主键

spring - 数据库逆向工程 (DBRE) 附加组件。架构不存在或没有任何表

java - SimpleJdbcCall 不适用于存储函数

jquery - 使用 AJAX、Spring MVC、MySQL 更新表

java - IntelliJ Jersey Web 服务部署(一些技巧和模板项目)

java - 使用 RMI 缓存复制器时出现 EhCache 死锁问题

java - 一个响应中可以设置多少个 cookie?

java - JDBC 连接意外变为空