判断token是否存在,根据是否存在进行放行
/ 前置路由守卫const whiteList = ['/login', '/404']router.beforeEach((to, from, next) => {const token = Cookies.get('token')// 如果存在 tokenif (token) {if (to.path === '/login') {// 如果存在 token,访问的是登录页面,直接跳转到主页next('/')} else {// 如果存在 token,访问的是其他页面,直接放行next()}} else {// 如果不存在 token,访问的是白名单内容,直接放行if (whiteList.includes(to.path)) {next()} else {// 没有 token,且不是白名单页面,跳转到登录页面next('/login')}}})
/ 拦截器instance.interceptors.request.use(config => {const token = Cookies.get('token') as string;if (token) {if (config && config.headers) {config.headers = config.headers || {}config.headers.Authorization = `Bearer ${token}` as string;}}return config;}, err => {return Promise.reject(err);})instance.interceptors.response.use(response => {if (response.data.success) {return response.data} else {return Promise.reject(new Error(response.data.message))}}, error => {// 软件工程:程序健壮性,做多层的校验if (error.response && error.response.data && error.response.data.code === 10002) {// 当等于 10002 的时候,表示后端告诉我 token 超时了// 登出action 删除tokenCookies.remove('token');} else {ElMessage.error(error.message) // 提示错误信息}// 对响应错误做点什么return Promise.reject(error)})export default instance;
