diff --git a/src/enums/pageEnum.ts b/src/enums/pageEnum.ts
index d74074d..51285a9 100644
--- a/src/enums/pageEnum.ts
+++ b/src/enums/pageEnum.ts
@@ -15,3 +15,10 @@ export enum PageEnum {
// 错误页面路径
ERROR_PAGE = '/exception',
}
+
+export enum SsoLoginPageEnum {
+ // KICS系统登陆路径
+ SSO_KICS_LOGIN = '/sso/login/kics',
+ // KLAB系统登陆路径
+ SSO_KLAB_LOGIN = '/sso/login/klab',
+}
diff --git a/src/router/guard/permissionGuard.ts b/src/router/guard/permissionGuard.ts
index 2dc6516..4ce3292 100644
--- a/src/router/guard/permissionGuard.ts
+++ b/src/router/guard/permissionGuard.ts
@@ -8,21 +8,35 @@
import type { Router, RouteRecordRaw } from 'vue-router';
import { usePermissionStoreWithOut } from '/@/store/modules/permission';
-import { PageEnum } from '/@/enums/pageEnum';
+import { PageEnum, SsoLoginPageEnum } from '/@/enums/pageEnum';
import { useUserStoreWithOut } from '/@/store/modules/user';
import { RootRoute } from '/@/router/routes';
import { PAGE_NOT_FOUND_ROUTE } from '/@/router/routes/basic';
+import { setObjToUrlParams } from '/@/utils';
+import { AesEncryption } from '/@/utils/cipher';
+import { cacheCipher } from '/@/settings/encryptionSetting';
+type BasicPageEnum = PageEnum | SsoLoginPageEnum;
const LOGIN_PATH = PageEnum.BASE_LOGIN;
const ROOT_PATH = RootRoute.path;
-
+const ssoPathList: SsoLoginPageEnum[] = Object.values(SsoLoginPageEnum);
/** 设置路由白名单 */
-const whitePathList: PageEnum[] = [ LOGIN_PATH ];
+const whitePathList: BasicPageEnum[] = [ LOGIN_PATH, ...ssoPathList ];
+const encryption = new AesEncryption({ key: cacheCipher.key, iv: cacheCipher.iv });
export function createPermissionGuard(router: Router) {
const userStore = useUserStoreWithOut();
const permissionStore = usePermissionStoreWithOut();
router.beforeEach(async (to, from, next) => {
+ // 校验token权限信息
+ const token = userStore.getAccessToken;
+ // sso重定向转发token进行登陆
+ if(ssoPathList.includes(to.path as SsoLoginPageEnum) && token) {
+ return window.location.replace(to.query?.redirect ? setObjToUrlParams(to.query?.redirect as string, {
+ ticket: encryption.encryptByAES(token)
+ }) : '/');
+ }
+
if (
// 如果指定首页路径数据不为空就代表已经登录直接放过
from.path === ROOT_PATH &&
@@ -33,8 +47,6 @@ export function createPermissionGuard(router: Router) {
return next(userStore.getUserInfo.homePath);
}
- // 校验token权限信息
- const token = userStore.getAccessToken;
// 放过白名单路由
if (whitePathList.includes(to.path as PageEnum)) {
if (to.path === LOGIN_PATH && token) {
@@ -45,9 +57,7 @@ export function createPermissionGuard(router: Router) {
next((to.query?.redirect as string) || '/');
return;
}
- } catch {
- //
- }
+ } catch {}
}
return next();
}
diff --git a/src/router/guard/stateGuard.ts b/src/router/guard/stateGuard.ts
index 93c257a..7987d52 100644
--- a/src/router/guard/stateGuard.ts
+++ b/src/router/guard/stateGuard.ts
@@ -11,13 +11,14 @@ import { useAppStore } from '/@/store/modules/app';
import { useMultipleTabStore } from '/@/store/modules/multipleTab';
import { useUserStore } from '/@/store/modules/user';
import { usePermissionStore } from '/@/store/modules/permission';
-import { PageEnum } from '/@/enums/pageEnum';
+import { PageEnum, SsoLoginPageEnum } from '/@/enums/pageEnum';
import { removeTabChangeListener } from '/@/logics/mitt/routeChange';
+const ssoPathList: SsoLoginPageEnum[] = Object.values(SsoLoginPageEnum);
export function createStateGuard(router: Router) {
router.afterEach((to) => {
// 只需进入登录页面,清除认证信息即可
- if (to.path === PageEnum.BASE_LOGIN) {
+ if (to.path === PageEnum.BASE_LOGIN || ssoPathList.includes(to.path as SsoLoginPageEnum)) {
const tabStore = useMultipleTabStore();
const userStore = useUserStore();
const appStore = useAppStore();
diff --git a/src/utils/index.ts b/src/utils/index.ts
index 096a02d..e3e600f 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -31,8 +31,8 @@ export function getPopupContainer(node?: HTMLElement): HTMLElement {
* @returns {string}
* eg:
* let obj = {a: '3', b: '4'}
- * setObjToUrlParams('www.baidu.com', obj)
- * ==>www.baidu.com?a=3&b=4
+ * setObjToUrlParams('cn.vuejs.org', obj)
+ * ==>cn.vuejs.org?a=3&b=4
*/
export function setObjToUrlParams(baseUrl: string, obj: any): string {
let parameters = '';
diff --git a/src/views/system/ssoLogin/kics/index.vue b/src/views/system/ssoLogin/kics/index.vue
index 7a1e993..c9ea762 100644
--- a/src/views/system/ssoLogin/kics/index.vue
+++ b/src/views/system/ssoLogin/kics/index.vue
@@ -1,6 +1,7 @@
–>
@@ -177,11 +178,11 @@
-
+ -->