为什么有人希望不同的应用程序使用相同的JSESSIONID值

时间:2016-11-25 16:46:03

标签: java session servlets

有可能as shown here使用配置Tomcat(或者我猜任何其他符合Servlet 3.5的容器)对使用多个Java应用程序的浏览器会话使用相同的JSESSIONID值(例如,在不同的tab)在同一个容器上。

但正如here解释的那样,会话对象会有所不同 - 只有JSESSIONID值才会相同:

  

SRV.7.3会话范围

     

HttpSession对象必须在应用程序(或servlet)上作用域   上下文)级别。底层机制,例如用于的cookie   建立会话,对于不同的上下文可以是相同的,但是   引用的对象,包括该对象中的属性,绝不能   由容器在上下文之间共享。

鉴于HttpSession个对象(以及会话范围内存区域)在不同应用程序之间的服务器端会有所不同,这种机制可以用来在不同应用程序之间传递信息的唯一方法是:

(a)将一些信息存储在JSESSIONID值本身

(b)使用公共JSESSIONID值在后端数据库上执行查找或以服务器到服务器的方式访问某些REST API并访问驻留在那里的共享信息共同的JSESSIONID。

选项(a)是不可能的,因为容器会创建JSESSIONID值,因此无法在其上雕刻其他信息。

我的上述观点是否正确以及您希望在同一个servlet容器中部署一组应用程序来共享会话标识符的一些用例是什么?

例如,我猜选项(b)可以在共享相同JSESSIONID的应用程序之间允许一些简化的单点登录实现(并且它们都在同一个Servlet容器中进行了扩展)。

1 个答案:

答案 0 :(得分:0)

您可以将JSESSION ID用作许多应用程序使用的数据库的键。例如。用于审计目的。