基于token登录设置threadlocal的疑问

楼主最近做了一个牛客网的中级项目,在登录这一块有些疑问,希望各位大神帮忙指点迷津!
在各种版本的参考代码中,我看到登录实现如下:
第一个蓝结器(正经打lanjieqi会被和谐),检查请求中cookie中的ticket,若能通过ticket拿到了user信息,则放到threadlocal中
第二个蓝结器,检查当前线程的threadlocal中是否有user,有说明登录过了,放行,否则跳转到登录界面
疑问是:
百度了一下,Tomcat维护了线程池,一般一个请求对应一个线程,那么假设我当前访问了登录页面,成功登录了,user被设置到当前线程A的threadlocal中。这时假设我点击评论按钮,在controller中return “redirect:/XXX”,这是另一个请求,Tomcat给它分配的线程不一定为线程A了,假设为线程B,那此时这个请求经过前面的蓝结器时岂不是又要设置一遍?折腾这么一大圈,把user设置到threadlocal中好像没啥用啊???开始我以为是实现在一次会话中多个请求之间共享User,但是现在看来也不是啊。。。有点晕
#Java#
全部评论
我也有点疑问,如果说两个用户登录都被分配到了一个线程,那threadlocal怎么存入信息?threadlocal中只存了一个人的信息啊
点赞 回复 分享
发布于 2023-01-17 13:40 北京
应该是一个连接一个线程,现在是长连接的
点赞 回复 分享
发布于 2020-12-16 18:48
刚才试了下,感觉应该是一个客户端为一个线程(所有请求)
点赞 回复 分享
发布于 2020-02-15 14:01
所以每次都需要从缓存中取吧
点赞 回复 分享
发布于 2019-05-17 21:59
可以在第一个***打个log试试你的想法是否正确
点赞 回复 分享
发布于 2019-05-17 21:53

相关推荐

12-09 00:19
清华大学 Java
Yilena:项目写的太差了,而且这两个项目也很杂,agent方面我不太了解,但对于后端来说这两个项目竞争力感觉不如烂大街项目。 我觉得首要之急是解决你到底是想搞toc/tob还是agent
不给转正的实习,你还去吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务