java通过合并自定义HTTP头支持每个浏览器的多个会话
在this article中,它解释了Spring会话如何通过合并第二个标识符为一个浏览器支持多个会话。默认情况下,该标识符名为_s
,是请求URL中的查询字符串
我试图实现完全相同的功能,但是我希望使用自定义HTTP头,而不是查询字符串。我对整个想法还不太了解,有人能告诉我这是否可行,从哪里开始吗
你可以在下面搜索框中键入要查询的问题!
在this article中,它解释了Spring会话如何通过合并第二个标识符为一个浏览器支持多个会话。默认情况下,该标识符名为_s
,是请求URL中的查询字符串
我试图实现完全相同的功能,但是我希望使用自定义HTTP头,而不是查询字符串。我对整个想法还不太了解,有人能告诉我这是否可行,从哪里开始吗
# 1 楼答案
查询字符串参数
_s
用于定位用于给定请求的会话。在official documentation中,此参数称为会话别名参数如果通过source code for Spring Session,您会注意到提取会话别名参数的任务被委托给^{} 接口。在当前的代码库中,这个接口只有一个实现-^{} ,它从查询字符串中提取参数(参见链接的源代码中的第183行)
因此,无法使用当前实现从HTTP头中提取参数值(因为唯一可用的实现只能从查询字符串中提取参数值)
但是,您可以将
CookieHttpSessionStrategy
子类化,重写getCurrentSessionAlias
方法以从标头中提取参数,并重写应用程序的默认会话策略,如下所示:其中,
MyHttpSessionStrategy
是您编写的自定义策略