【问题标题】:How to handle dynamically changing JSESSIONID at server如何在服务器上处理动态更改的 JSESSIONID
【发布时间】:2017-12-06 17:04:31
【问题描述】:

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

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

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

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

【问题讨论】:

  • 理想情况下,使用无状态的东西而不是会话。如果这不切实际,您是否尝试过 Spring Session?
  • 跟踪用户登录似乎应该是有状态的;与在每个请求中发送登录信息不同。

标签: java angularjs spring-mvc tomcat


【解决方案1】:

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

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

使用用户 ID 或类似名称(可能是您在他们登录时生成的 UUID)来识别数据库中的会话。

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

访问会话时, 如果现在在validUntil之后, 那么会话就超时了。

【讨论】:

猜你喜欢
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多