axios版本:1.3.6,框架:vue3,工具:elementplus


需求:

在vue3 main.js 中统一设置axios响应拦截器,当token过期(后端响应码status=401)

  1. 提示用户token过期

  2. 删除localStorage的token

  3. 跳转回登录页面


问题:

拦截器 axios.interceptors.response.use() 的两个参数,response=>{} 和 error=>{},都无法访问到401状态码。

原因:axios过滤了401错误。


解决:修改axios源码。

  • 文件位置:

node_modules/axios/lib/core/settle.js

  • 找到:

if ( !response.status || !validateStatus || validateStatus(response.status) )

  • 改为:

if ( !response.status || !validateStatus || validateStatus(response.status) || response.status===401 )

  • 重新设置响应拦截器

  • 在response.data.status中可以访问到401状态码

axios.interceptors.response.use (

response => {

if ( response.data.status===401 ) {

ElMassage.error ( '身份认证过期' )

localStorage.removeItem ( 'token' )

router.push ( '/login' )

}

return response

}

 


---------------------
作者:迦罗远洲
来源:CSDN
原文:https://blog.csdn.net/2203_75725182/article/details/130516884
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐