在vue开发中使用axios来调用后台接口,需进行一系列配置,这里就不多说了,主要是发现了一个小小的问题。
我做的项目是登录成功返回一个身份验证信息token,我将token保存在本地session中,然后在配置axios的http.js文件中将token赋值给一个变量,然后在拦截器判断是否存在token,这里是通过变量获取的
代码如下
在这里插入图片描述
然后登录成功之后跳转到主页面继而调用接口获取用户信息,此时报401
在这里插入图片描述
在请求失败的回调中是能打印出来保存在session的token,但是在拦截器里打印出来是null,我想了很久最终猜测,是因为把token赋值给了一个变量,在登录时第一次调用接口,此时的token是空的,也就是那个变量TOKEN是空的,而登录成功后再调用另一个接口,仅调用暴露出去的axios,并不会把整个http.js文件重新调用一边,也就是说,此时暴露出去的axios里的token还是那个空的TOKEN,所以报401
所以直接在拦截器那里从session中那token,修改如下:
在这里插入图片描述
总结:在调用js里的对象时,用到的变量需定义在对象里面

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐