what the fuck! 为啥后台老是报401,而且不讲道理!

我最先发现这个问题时,它的表现形式是一直调退出的接口,循环调,不带一下停的,分分钟几千次,而且页面也不带动一下的,点击退出也没用,退出接口返的也是401。只有手动清除cookie里面的token才会退出,那么为啥会出现这个问题呢,请看下面的原因分析

原因分析

有人一看401,好了,那不就是请求未授权吗,token过期了或者未登录,立马去质问后台了,可是后台把过期时间调长了,还是这样。再把里面的token拿去后台校验,并没有过期啊,那为啥一直死亡循环调退出接口。

前端对axios请求响应有一个统一的拦截,就是当你接口返回401的时候统一处理了,401的逻辑代码会把存储的一些本地数据移除,再调一次logout接口(这是因为要统计当前系统的在线人数,登录加1,退出减一),最后再回到登录页让用户重新登陆。这逻辑本来没啥问题,可问题就在401会调logout,而logout友返回的是401,401的返回又被响应拦截了,又去调logout,于是logout方法里面的就是逻辑代码根本就没执行,一直再调接口,如此恶心循环。

那么问题来了,我们token的时间足够长,他为啥没过期就被接口返回401了呢?这还得说说项目部署的一些问题,现在的系统一般都是接入很多第三方系统,而且部署项目采用较多的两种方式是虚拟机虚拟化部署,模拟多个ip,还有一种就是k8s容器化部署,容器化部署后项目可能会在同一个域名下,那么问题来了,同一个域名下的cookie那不就共享了,最致命的是如果存入cookie中的字段又一样,那么你依次登录两个系统,它存在cookie中的token不就被覆盖了吗,所以这就导致了你那一个系统的token去登陆另一个系统,于是这样就形成了一个原本token没过期,但是却拿到错的token去验证!

于是乎就出现了上面所描述的问题,后台懵逼,前端也非常懵逼,殊不知在cookie中的token巧无声息的被替换了!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新西伯利亚狼

继承国人白嫖的优良传统不必打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值