VUE - 在axios中使用router进行跳转(二次鉴权)

本文介绍了如何在Vue项目中,使用axios的响应拦截器进行二次鉴权处理。当接收到特定状态码时,通过Vue.prototype.$router进行登录页跳转。在遇到无法直接使用$router的问题时,通过导入并使用src/router/index中的router实例解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:在课程设计中,做一个权限控制,这里前端我是简单的用sessionStorage做判断,但是一般来说前端后台的状态并非时刻一致的,例如阿里云,你不操作五六分钟,再去执行操作就会提示你需要重新登录了。所以需求就是当我发一个请求给后台,后台返回一个码告诉我需要登录,因为这是一个重复操作(简单来做就是在每个请求回调中判断code,是的话就触发跳转回去登录页面)。所以我打算直接在axios里使用reposne interceptors拦截响应,先判断code是否为我设置好的UNAUTHORIZED,是的话直接跳转登录页,否则直接return promise给下一层。

首先,我在axios里是做成插件形式(install(Vue))这种形式的,在内部是可以获取到VUE实例的,所以打算直接采用在axios里Vue.prototype.$router 进行跳转,但是提示一个错误说找不到router,于是乎在一个技术群里发问,有人提示我说在axios utils里import Router实例进去。

于是乎

import Router from 'vue-router'

然后在interceptors里

axios.interceptors.response.use(response => {
      if (response.status === 200 && response.data.code === UNAUTHORIZED) {
        sessionStorage.setItem('goback', 1)
        Router.push({path: '/account/signin'})
        return response
      } else {
        return response
      }
    })

但是这样依然报错,于是我就在interceptors里打印Router,发现它是一个空的东西

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值