将token存储到localStorage
登陆成功,便将返回的token值存入localStorage。
localStorage.setItem("Token",token);
全局前置守卫
router.beforeEach((to,from,next)=>{
if(to.path==='/Login') return next()
//获取token
const tokenStr=window.sessionStorage.getItem('Token')
if(!tokenStr) return next('/login')
next()
}
})
Token过期处理
//请求拦截
axios.interceptors.request.use(function (config) { // 每次请求时会从localStorage中获取token
let token = Storage.localGet('Token')
if (token) {
token = new RegExp("(^| )" + 'token' + "=([^;]*)(;|$)") // 把token加入到默认请求参数中
config.headers.common['Authorization'] = token
}
//必须返回
return config
}, function (error) {
return Promise.reject(error)
})
//响应拦截
axios.interceptors.response.use(function (response) {
if (response.data.code === 401) {
Storage.localRemove('token') // 删除已经失效或过期的token
router.replace({
path: '/login' // 重定向倒/login
})
} else {function (error) {
return Promise.reject(error)
}}
})