【问题标题】:Restore previous session's attribute恢复上一个会话的属性
【发布时间】:2013-02-28 12:45:48
【问题描述】:
假设,使用 username="ABC" 的登录,
部分数据在session中设置如下:
session.setAttribute("mydata", mydata);
如果当前会话过期,用户将被重定向到登录页面。
现在,如果用户再次使用相同的用户名(“ABC”)登录,
我们可以检索上一个会话的属性,以便用户可以继续他的工作吗?
请建议我检索前一会话数据的可能解决方案。
谢谢。
【问题讨论】:
标签:
java
spring
jakarta-ee
web
session-timeout
【解决方案1】:
我不相信这是可能的。但是,您始终可以创建一个信号量,您的应用可以在用户登录时对其进行检查,如果已经有一个现有的用户会话正在运行,则使会话无效。
如果您在非集群环境中运行,此信号量可以像 Java 静态变量一样简单,或者更好的方法是在数据库表中设置标志,特别是如果您在集群环境中运行。
【解决方案2】:
不可能,当会话过期时,它包含的所有内容都已失效。这是由容器控制的。
【解决方案3】:
您可以在会话属性过期之前将其保存到数据库中,然后在用户再次登录时将它们添加回新会话。