修改登录超时刷新页面跳转登录页面还提示重新登录问题
This commit is contained in:
		| @@ -1,53 +1,56 @@ | ||||
| import router from './router' | ||||
| import store from './store' | ||||
| import { Message } from 'element-ui' | ||||
| import NProgress from 'nprogress' | ||||
| import 'nprogress/nprogress.css' | ||||
| import { getToken } from '@/utils/auth' | ||||
|  | ||||
| NProgress.configure({ showSpinner: false }) | ||||
|  | ||||
| const whiteList = ['/login', '/auth-redirect', '/bind', '/register'] | ||||
|  | ||||
| router.beforeEach((to, from, next) => { | ||||
|   NProgress.start() | ||||
|   if (getToken()) { | ||||
|     to.meta.title && store.dispatch('settings/setTitle', to.meta.title) | ||||
|     /* has token*/ | ||||
|     if (to.path === '/login') { | ||||
|       next({ path: '/' }) | ||||
|       NProgress.done() | ||||
|     } else { | ||||
|       if (store.getters.roles.length === 0) { | ||||
|         // 判断当前用户是否已拉取完user_info信息 | ||||
|         store.dispatch('GetInfo').then(() => { | ||||
|           store.dispatch('GenerateRoutes').then(accessRoutes => { | ||||
|             // 根据roles权限生成可访问的路由表 | ||||
|             router.addRoutes(accessRoutes) // 动态添加可访问路由表 | ||||
|             next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 | ||||
|           }) | ||||
|         }).catch(err => { | ||||
|             store.dispatch('LogOut').then(() => { | ||||
|               Message.error(err) | ||||
|               next({ path: '/' }) | ||||
|             }) | ||||
|           }) | ||||
|       } else { | ||||
|         next() | ||||
|       } | ||||
|     } | ||||
|   } else { | ||||
|     // 没有token | ||||
|     if (whiteList.indexOf(to.path) !== -1) { | ||||
|       // 在免登录白名单,直接进入 | ||||
|       next() | ||||
|     } else { | ||||
|       next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 | ||||
|       NProgress.done() | ||||
|     } | ||||
|   } | ||||
| }) | ||||
|  | ||||
| router.afterEach(() => { | ||||
|   NProgress.done() | ||||
| }) | ||||
| import router from './router' | ||||
| import store from './store' | ||||
| import { Message } from 'element-ui' | ||||
| import NProgress from 'nprogress' | ||||
| import 'nprogress/nprogress.css' | ||||
| import { getToken } from '@/utils/auth' | ||||
| import { isRelogin } from '@/utils/request' | ||||
|  | ||||
| NProgress.configure({ showSpinner: false }) | ||||
|  | ||||
| const whiteList = ['/login', '/auth-redirect', '/bind', '/register'] | ||||
|  | ||||
| router.beforeEach((to, from, next) => { | ||||
|   NProgress.start() | ||||
|   if (getToken()) { | ||||
|     to.meta.title && store.dispatch('settings/setTitle', to.meta.title) | ||||
|     /* has token*/ | ||||
|     if (to.path === '/login') { | ||||
|       next({ path: '/' }) | ||||
|       NProgress.done() | ||||
|     } else { | ||||
|       if (store.getters.roles.length === 0) { | ||||
|         isRelogin.show = true | ||||
|         // 判断当前用户是否已拉取完user_info信息 | ||||
|         store.dispatch('GetInfo').then(() => { | ||||
|           isRelogin.show = false | ||||
|           store.dispatch('GenerateRoutes').then(accessRoutes => { | ||||
|             // 根据roles权限生成可访问的路由表 | ||||
|             router.addRoutes(accessRoutes) // 动态添加可访问路由表 | ||||
|             next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 | ||||
|           }) | ||||
|         }).catch(err => { | ||||
|             store.dispatch('LogOut').then(() => { | ||||
|               Message.error(err) | ||||
|               next({ path: '/' }) | ||||
|             }) | ||||
|           }) | ||||
|       } else { | ||||
|         next() | ||||
|       } | ||||
|     } | ||||
|   } else { | ||||
|     // 没有token | ||||
|     if (whiteList.indexOf(to.path) !== -1) { | ||||
|       // 在免登录白名单,直接进入 | ||||
|       next() | ||||
|     } else { | ||||
|       next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 | ||||
|       NProgress.done() | ||||
|     } | ||||
|   } | ||||
| }) | ||||
|  | ||||
| router.afterEach(() => { | ||||
|   NProgress.done() | ||||
| }) | ||||
|   | ||||
| @@ -9,7 +9,7 @@ import { saveAs } from 'file-saver' | ||||
|  | ||||
| let downloadLoadingInstance; | ||||
| // 是否显示重新登录 | ||||
| let isReloginShow; | ||||
| export let isRelogin = { show: false }; | ||||
|  | ||||
| axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' | ||||
| // 创建axios实例 | ||||
| @@ -76,23 +76,20 @@ service.interceptors.response.use(res => { | ||||
|       return res.data | ||||
|     } | ||||
|     if (code === 401) { | ||||
|       if (!isReloginShow) { | ||||
|         isReloginShow = true; | ||||
|       if (!isRelogin.show) { | ||||
|         isRelogin.show = true; | ||||
|         MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { | ||||
|           confirmButtonText: '重新登录', | ||||
|           cancelButtonText: '取消', | ||||
|           type: 'warning' | ||||
|         } | ||||
|       ).then(() => { | ||||
|         isReloginShow = false; | ||||
|         isRelogin.show = false; | ||||
|         store.dispatch('LogOut').then(() => { | ||||
|           // 如果是登录页面不需要重新加载 | ||||
|           if (window.location.hash.indexOf("#/login") != 0) { | ||||
|             location.href = '/index'; | ||||
|           } | ||||
|           location.href = '/index'; | ||||
|         }) | ||||
|       }).catch(() => { | ||||
|         isReloginShow = false; | ||||
|         isRelogin.show = false; | ||||
|       }); | ||||
|     } | ||||
|       return Promise.reject('无效的会话,或者会话已过期,请重新登录。') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user