如何处理在服务器上动态更改JSESSIONID

时间:2017-12-06 17:04:32

标签: java angularjs spring-mvc tomcat

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

由于网络配置中存在一些未知问题,即使在启用会话持久性之后,我发现JSESSIONID cookie在后续请求之间不断变化。

这会导致登录和身份验证信息丢失,因为这些值在会话对象中存储为auth密钥。

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

1 个答案:

答案 0 :(得分:1)

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

而是使用数据库(在所有服务器之间共享)来存储会话信息。

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

跟踪" validUntil"每个会话的数据库中的datetime值, 每次用户访问会话时都会更新它(读写); 这就是你实现会话超时的方法。

访问会话时, 如果现在是在validUntil之后, 会议已超时。