请稍等 ...
×

采纳答案成功!

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

部署阿里云服务后token无效

老师您好,本地调试没问题,部署到阿里云服务器以后token无效被拦截。
gateway拦截日志:
图片描述
检查过了gateway和server的Redis相关配置,都是和老师你的一样:
图片描述
其中在gateway模块:
Object object = redisTemplate.opsForValue().get(token);
在本地开发时都能正常接收object对象。
但是部署到阿里云以后gateway模块中的object为null。
经过测试,部署在ECS服务器上后,在system模块中
redisTemplate.opsForValue().set(token, JSON.toJSONString(loginUserDto), 3600, TimeUnit.SECONDS); 后面增加
Object object = redisTemplate.opsForValue().get(token);
可以在system模块中正常接收object对象,但是在gateway模块中的object对象为null,所以导致了token无效401错误。

请问一下老师该怎么处理啊?gateway模块中的验证码也是使用redis进行传输的,验证码可以正常接收,为什么object无法正常接收呢?gateway中的Redis配置是正确的,如果Redis配置错误的话,验证码也无法正常接收。
需要单独把server模块打包成一个jar包传到阿里云ECS上吗???

正在回答 回答被采纳积分+3

2回答

甲蛙 2022-02-10 21:15:28

按你的描述,看不出来问题,验证码的放和取都是在system模块,跟gateway的redis无关?

你在发布过程中,有没有改过redis,改过后记得要重新打包

可以安装个redis客户端,登录上去看看,确认下redis里确实有token,且value是对的

下载视频          
0 回复 有任何疑惑可以回复我~
甲蛙 2022-02-09 20:02:56

server不需要单独打包发布

你的问题看起来是gateway的redis的问题,有可能配置的跟server的不一样,看下代码配置文件,或者是不是在nacos控台有配置redis

另外一点,可以确认下你set的token和登录拦截时传的token是否是一样的,且类型要一致。比如set的时候是数值 1,get的时候是字符串 "1",是获取不到的 

0 回复 有任何疑惑可以回复我~
  • 提问者 慕的地5474854 #1
    感谢老师回复,老师你说的我都检查过了。gateway和server中redis的配置是一样的,nacos中也没有配置过redis,system和gateway中的set和get时候传的token都是String类型的,可以在system中接收token对应的值,但就是在gateway中无法接收token对应的值。已经卡这两天了,不知道怎么办了!!!
    回复 有任何疑惑可以回复我~ 2022-02-10 05:28:29
  • 提问者 慕的地5474854 #2
    本地开发时都是正常的,部署在ECS后就无法在gateway中接收token的值了!!!
    回复 有任何疑惑可以回复我~ 2022-02-10 05:29:25
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信