请稍等 ...
×

采纳答案成功!

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

关于axios请求拦截

图片描述
有两个疑问,1、如果像老师这样写的话,在登录的时候,也会走此逻辑,那么此时会取不到token的值,要做下判空和默认处理;2、就算做了这些处理,那么在调用login接口的时候,因为token此时还没生成,所以headers还是会带有Authorization: 'Bear’这个信息,这样会不会有什么影响?有什么办法能够在调用login接口的时候,不带有Authorization字段呢?

正在回答

2回答

河畔一角 2021-05-28 14:43:24

首先后台已经过滤掉了登录接口,也就是后台是不会检验登录有没有token的所以登录带不带都没有作用。
其次,登录如果不想带,可以根据路由地址做个判断,在前端把header过滤掉。

0 回复 有任何疑惑可以回复我~
  • 提问者 Lemon甜橙君 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-05-28 14:44:00
  • 老师处理登录请求的时候,const { token } = storage.getItem('userInfo'),此处报错TypeError: Cannot destructure property 'token' of 'storage.getItem(...)' as it is undefined.登录的时候,userInfo还未存储localStorage,storage.getItem('userInfo')取得值为undefined,解构赋值报错
    回复 有任何疑惑可以回复我~ 2021-11-04 11:33:40
  • 我也碰到了这个问题,请问你是怎么解决的?
    回复 有任何疑惑可以回复我~ 2022-01-11 15:17:18
提问者 Lemon甜橙君 2021-05-28 14:43:33

想到了一种解决方案,就是不在axios的请求拦截里写逻辑,而是在登录成功后,添加

axios.defaults.headers.common.Authorization = `Bear ${data.token}`,但是这样又有个问题就是没法做到数据持久化,如果刷新页面的话,Authorization就会消失掉。所以,一定要在axios的请求拦截器中去写Authorization的逻辑么?


0 回复 有任何疑惑可以回复我~
  • lu9944 #1
    我觉得是带不带都无所谓吧,因为登录接口已经在白名单了,也不会去校验。
    回复 有任何疑惑可以回复我~ 2021-06-06 04:54:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信