请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于使用Threadlocal带来的问题

老师,通过Threadlocal存储user信息,不就把网关/应用层变成有状态的了吗?如果对网关作集群的话,那用户刷新,去到别的网关,就取不到用户ID了,这不就出问题了吗?

突然又想到一个问题:如果在网关之前添加一个拦截器或者过滤器,将用户信息放到这个网关对应的拦截器中,就算网关做了集群,每次也能将用户信息存到对应的过滤器/拦截器中,那么就算集群转发到不同的网关,也能获取到用户信息,请问这会带来什么问题呢?

正在回答

1回答

这个好像之前有童鞋问过,  其实咱们这一次是每个网关收到request请求以后,都会重新查询用户信息, 所以不存在有状态这一说。

如果想弄好一点, 可以考虑加入Redis, 然后所有节点共享一个Redis数据

0 回复 有任何疑惑可以回复我~
  • 提问者 yejiajiajia #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-04-10 22:32:06
  • 提问者 yejiajiajia #2
    还有一个小疑问,老师说的每次请求都会查询用户信息,是指AuthFilter每次都会拦截吧,但是/user这个就不会去获取用户信息,假如是,在gateway1登陆,在gateway2使用/user/userInfo查询用户信息,这就会查不到了吧
    
    如果这个表述不够清晰,我就开另一个问题附上图片说明一下,谢谢老师啦。
    回复 有任何疑惑可以回复我~ 2019-04-10 23:21:39
  • 提问者 yejiajiajia #3
    哦,这个问题解决了,因为我看到最终配置文件的忽略列表没有/user/getInfo了
    回复 有任何疑惑可以回复我~ 2019-04-11 22:29:20
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号