java - 如何在服务器上处理动态变化的 JSESSIONID

标签 java angularjs spring-mvc tomcat

我们有一个包含多个负载平衡和 tomcat 服务器的云环境,服务于单个 Web 应用程序(用 angularjs、spring-mvc 和 java 编写的单页面应用程序)。

由于网络配置中的一些未知问题,即使在启用 session 持久性之后,我观察到 JSESSIONID cookie 在后续请求之间不断变化。

这会导致登录和身份验证信息丢失,因为这些值作为身份验证 key 存储在 session 对象中。

在服务器端处理更改 JSESSIONID 的最佳实践是什么?

最佳答案

在您的云设置中,您似乎永远不能信任服务器端的 JSESSIONID;所以放弃吧。

改为使用数据库(在所有服务器之间共享)来存储 session 信息。

使用 userid 或类似的东西(可能是您在他们登录时生成的 UUID)来识别数据库中的 session 。

在数据库中为每个 session 跟踪一个“validUntil”日期时间值, 每次用户访问 session (读和写)时更新它; 这就是您将如何实现 session 超时。

访问 session 时, 如果现在是在 validUntil 之后, 然后 session 超时。

关于java - 如何在服务器上处理动态变化的 JSESSIONID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47679736/

相关文章:

java - 使用 ikvmc 创建 .dll 时包含外部 jar

Java try/catch args[0] 未找到

java - 在数据存储 View 中找不到使用 objectify 持久化的实体

javascript - 在数组中的两个项目之间进行检查的更好方法

java - Spring + Thymeleaf 显示列表中的最后两个元素

java - 是否有节省空间的合并排序实现?

javascript - 如何从 Angular Laravel 的数据库中提取 Chartjs 数据?

css - Angular 发送反馈

java - `($propertyname,)+[asc|desc]?`实际上意味着什么?

spring-mvc - 在jboss服务器上部署Spring MVC应用程序时出现异常