基于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#