|
@@ -13,7 +13,7 @@ import { getQueryObject } from '@/utils'
|
|
|
NProgress.configure({ showSpinner: false });
|
|
|
|
|
|
const whiteList = ['/login', '/register','/demo/table'];
|
|
|
-
|
|
|
+let num = 0;
|
|
|
const handle = (to,next) => {
|
|
|
isRelogin.show = true
|
|
|
// 判断当前用户是否已拉取完user_info信息
|
|
@@ -43,8 +43,37 @@ const handle = (to,next) => {
|
|
|
}
|
|
|
|
|
|
router.beforeEach((to, from, next) => {
|
|
|
+ num++
|
|
|
NProgress.start()
|
|
|
- if (getToken()) {
|
|
|
+ let params = getQueryObject();
|
|
|
+ const ticket = params.ticket;
|
|
|
+ const ssoToken = params.ssoToken;
|
|
|
+ if((ticket || ssoToken) && num === 1){
|
|
|
+ let data = {}
|
|
|
+ const url = ticket ? '/sso/doLoginByTicket' : '/sso/doLoginByToken'
|
|
|
+ if(ticket) {
|
|
|
+ data.ticket = ticket
|
|
|
+ }
|
|
|
+ if(ssoToken) {
|
|
|
+ data.token = ssoToken
|
|
|
+ }
|
|
|
+ // console.log('开始');
|
|
|
+ useUserStore().getTokenHandle({url:url,data:data})
|
|
|
+ .then(() => {
|
|
|
+ handle(to,next)
|
|
|
+ }).catch(err =>{
|
|
|
+ let msg = '未知错误,请联系管理员!'
|
|
|
+ if(err && err.msg) {
|
|
|
+ msg = err.msg
|
|
|
+ }
|
|
|
+ ElMessageBox.alert(msg, '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ callback: () => {
|
|
|
+ store.dispatch('LogOut').then(() => {})
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ }else if(getToken()) {
|
|
|
to.meta.title && useSettingsStore().setTitle(to.meta.title)
|
|
|
/* has token*/
|
|
|
// if (to.path === '/login') {
|
|
@@ -57,39 +86,58 @@ router.beforeEach((to, from, next) => {
|
|
|
next()
|
|
|
}
|
|
|
// }
|
|
|
- } else {
|
|
|
- let params = getQueryObject();
|
|
|
- const ticket = params.ticket;
|
|
|
- const ssoToken = params.ssoToken;
|
|
|
- if(ticket || ssoToken){
|
|
|
- let data = {}
|
|
|
- const url = ticket ? '/sso/doLoginByTicket' : '/sso/doLoginByToken'
|
|
|
- if(ticket) {
|
|
|
- data.ticket = ticket
|
|
|
- }
|
|
|
- if(ssoToken) {
|
|
|
- data.token = ssoToken
|
|
|
- }
|
|
|
- // console.log('开始');
|
|
|
- useUserStore().getTokenHandle({url:url,data:data})
|
|
|
- .then(() => {
|
|
|
- handle(to,next)
|
|
|
- }).catch(err =>{
|
|
|
- let msg = '未知错误,请联系管理员!'
|
|
|
- if(err && err.msg) {
|
|
|
- msg = err.msg
|
|
|
- }
|
|
|
- ElMessageBox.alert(msg, '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- callback: () => {
|
|
|
- store.dispatch('LogOut').then(() => {})
|
|
|
- }
|
|
|
- });
|
|
|
- })
|
|
|
- }else{
|
|
|
- const redirect = location.origin
|
|
|
- location.href = `${import.meta.env.VITE_APP_LOGIN_URL}?&redirect=${encodeURIComponent(redirect)}`
|
|
|
- }
|
|
|
+ }else{
|
|
|
+ const redirect = location.origin
|
|
|
+ location.href = `${import.meta.env.VITE_APP_LOGIN_URL}?&redirect=${encodeURIComponent(redirect)}`
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // if (getToken()) {
|
|
|
+ // to.meta.title && useSettingsStore().setTitle(to.meta.title)
|
|
|
+ // /* has token*/
|
|
|
+ // // if (to.path === '/login') {
|
|
|
+ // // next({ path: '/' })
|
|
|
+ // // NProgress.done()
|
|
|
+ // // } else {
|
|
|
+ // if (useUserStore().roles.length === 0) {
|
|
|
+ // handle(to,next)
|
|
|
+ // } else {
|
|
|
+ // next()
|
|
|
+ // }
|
|
|
+ // // }
|
|
|
+ // } else {
|
|
|
+ // let params = getQueryObject();
|
|
|
+ // const ticket = params.ticket;
|
|
|
+ // const ssoToken = params.ssoToken;
|
|
|
+ // if(ticket || ssoToken){
|
|
|
+ // let data = {}
|
|
|
+ // const url = ticket ? '/sso/doLoginByTicket' : '/sso/doLoginByToken'
|
|
|
+ // if(ticket) {
|
|
|
+ // data.ticket = ticket
|
|
|
+ // }
|
|
|
+ // if(ssoToken) {
|
|
|
+ // data.token = ssoToken
|
|
|
+ // }
|
|
|
+ // // console.log('开始');
|
|
|
+ // useUserStore().getTokenHandle({url:url,data:data})
|
|
|
+ // .then(() => {
|
|
|
+ // handle(to,next)
|
|
|
+ // }).catch(err =>{
|
|
|
+ // let msg = '未知错误,请联系管理员!'
|
|
|
+ // if(err && err.msg) {
|
|
|
+ // msg = err.msg
|
|
|
+ // }
|
|
|
+ // ElMessageBox.alert(msg, '提示', {
|
|
|
+ // confirmButtonText: '确定',
|
|
|
+ // callback: () => {
|
|
|
+ // store.dispatch('LogOut').then(() => {})
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // })
|
|
|
+ // }else{
|
|
|
+ // const redirect = location.origin
|
|
|
+ // location.href = `${import.meta.env.VITE_APP_LOGIN_URL}?&redirect=${encodeURIComponent(redirect)}`
|
|
|
+ // }
|
|
|
|
|
|
|
|
|
// 没有token
|
|
@@ -100,7 +148,7 @@ router.beforeEach((to, from, next) => {
|
|
|
// next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
|
|
|
// NProgress.done()
|
|
|
// }
|
|
|
- }
|
|
|
+ // }
|
|
|
})
|
|
|
|
|
|
router.afterEach(() => {
|