// 首次登录获取token存储在localStorage或者vueX中
// 在请求拦截器(request)中设置每次请求都携带token
axios.interceptors.request.use(function (config) {
// 在请求之前验证token,是否有token或者过期
let myToken = window.localStorage.getItem('token')
if (token) {
axios.defaults.headers.common['Authorization'] = myToken
} else {
this.$router.replace({
// 跳转登录页
path: '/login',
// 存储路径,登录成功跳转
query: {redirect: this.$router.currentRoute.fullPath}
})
}
return config
}, function (error) {
// 对错误进行判断
// 如果返回401,则跳转到登录页
switch (error.response.status) {
case 401:
this.$router.replace({
path: '/login',
query: {redirect: this.$router.currentRoute.fullPath}
})
}
return Promise.reject(error)
})
// 通过路由守卫来判断当前路由页面是否需要某种条件限制
router.beforeEach(to, from, next) {
// 判断是否限制
if (to.meta.requiresAuth) {
// 判断token
if (token) {
} else {
}
} else {
next()
}
}