14 spring-security 中的 SessionManagerFilter 导致的每刷新一次页面 JSESSIONID 切换一次 导致 session 不可用

前言

这个问题是最近的一个老项目 碰到的一个问题

假设 我现在在同一个页面, 刷新一下页面, 加载完毕之后, 再刷新一下页面 

然后 可以看到的是两次刷新页面所发送的请求, 携带的 JSESSIONID 不一样, 然后 导致了 服务端这边使用 session 相关特性失效 

然后 这里我们就是来看一下 处理的原因  

首先项目是引入了 spring-security, 然后 进而导致的这个问题

情况如下, 以红线作为 第一次 和 第二次 相关网络请求的分隔符

然后可以看到的是 第一批次的请求中携带的 JSESSIONID 均为 “4415237FB3237945BB3103BCB187F5F3”

然后 响应了一个 set-cookie 的响应头, 告诉客户端这边重新更新 cookie, 第一批次的请求的所有响应里面都有这个 set-cookie, 并且每一个 set-cookie 中的 JSESSIONID 不一

第二个批次的请求如下, 可以看到携带的 JSESSIONID 为 “9142F6629C4D076207C283CD8A103BC9”

然后 客户端这边挑选的是 上面的 ”/serviceStatsByLv2” 的 JSESSIONID 进行设置, 当然 这个挑选是由浏览器这边来控制的, 我们暂时不关心这个问题 

然后第二批次的这批请求, 基本上都有 set-cookie 的响应头 

按照 我们的通常的 web 经验的理解, 一个 session 应该是有一定的生命周期的, 为啥这里每一批次请求 就会切换 JSESSIONID 呢??

这是和 spring-security 中的一个 SessionManagementFilter 有关系 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值