jboot1.4.3版本之后的session策略变化导致限流注解失效

发布于 2021-12-07 05:33:33 字数 705 浏览 670 评论 1

jboot1.4.3前版本,用户访问都会自动给当前访问用户设置session

jboot1.4.3之后版本则不会,除非手动调用setSessionAttr("user","测试数据");才会给用户设置session;这样会导致以下结果:

jboot1.5.5中获取用户sessionid

String sessionid_first=getSession(true).getId()

如果没有手动给用户设置session

setSessionAttr("user","测试数据");

那么再此获取sessionid

String sessionid_second=getSession(true).getId()

此时sessionid_first和sessionid_second不一致;

那么问题来了,限流拦截其中如果用户第一次访问,1.4.3以后版本中就不会给用户设置一个默认session,所以每次sessionid都不一样,根据sessionid限流也就失去了意义!!!

以上问题不知是我设置的问题还是jboot版本更新导致的问题,请海哥解答!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

草莓味的萝莉 2021-12-07 12:25:03

首先赞扬下:这个问题问的非常专业,也看出你对Jboot的源码非常熟悉。

首先说下Jboot分布式Session的设计,Jboot的分布式Session使用了redis等作为Session的存储介质,当一个空的Session存在redis时,用户每次访问的时候都要去刷新redis对这个空数据的失效时间。

因此为了提高性能,对于没有数据的Session,Jboot默认都会清除这个session。

 

但是造成了文章提到的 user limitaion 无效的问题,下个版本修复。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文