即使在服务 reboot\re-installation 之后,jsessionid 也会被保存和使用

jsessionid is saved and used even after reboot\re-installation of the service

我有一个 Tomcat 7 网络服务器。 登录后,我可以在 Cookies 下看到 jsessionid,根据我的阅读,它保存了用户和 Web 服务器之间的会话实例的 ID。

但我无法理解的是,我登录后一直停留在浏览器中。 我可以停止服务器,甚至可以从系统中卸载并重新安装。 然后在我重新启动它之后,我可以继续在网站中导航,而无需输入凭据或类似的东西,就好像后台什么也没发生一样——我可以继续使用相同的 jesssionId。

所以基本上我会把我的问题分成子问题,这样会更容易回答: 1. 停止服务甚至卸载后,怎么可能还会发生? 2. jesessionID 是如何创建的?我的意思是它可能是 相同的 jsession id 吗? 3.When jsessionID 是否正在创建? 4. 是否可以更改此行为和 "invalidate" 会话,以便用户必须重新输入他的凭据? 5. 根据问题 #4,大多数服务的共同点是什么?要求重新登录或启用旧会话 ID?

非常感谢!

回答您的问题:

  1. Tomcat的session Manager will serialize session data and save it to a file to persist it across restarts. You can disable这个
  2. Tomcat的SessionId Generator决定了创建id的确切方式。
  3. 这里有一个关于何时创建会话 ID 的好答案:Under what conditions is a JSESSIONID created?
  4. 如果您的目标是在 Tomcat 重启后使会话失效,您可以通过禁用会话持久性来实现。
  5. 通常情况下,用户希望被视为 "logged in",直到他们单击应用程序中的 "log out" link 或按钮。如果您希望会话在一段时间不活动后过期,您还可以调整会话过期时间。这究竟应该如何工作取决于您,并且取决于您的应用程序的用例。