我们有一个包含多个负载平衡和 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/