前言:在课程设计中,做一个权限控制,这里前端我是简单的用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,发现它是一个空的东西