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