Просмотр исходного кода

[Feat 0000] 自动登录功能实现

houzekong 11 месяцев назад
Родитель
Сommit
d666fb0b42
3 измененных файлов с 28 добавлено и 0 удалено
  1. 2 0
      src/router/constant.ts
  2. 8 0
      src/router/guard/permissionGuard.ts
  3. 18 0
      src/store/modules/user.ts

+ 2 - 0
src/router/constant.ts

@@ -8,6 +8,8 @@ export const QIANKUN_ROUTE_NAME = 'MicroApp';
 
 export const QIANKUN_ROUTE_OUTER_NAME = 'MicroAppOuter';
 
+export const AUTO_LOGIN_URL_QUERY = { key: 'auto-login', val: '1' };
+
 // 暂时修改
 export const EXCEPTION_COMPONENT = () => import('/@/views/sys/exception/Exception.vue');
 // export const EXCEPTION_COMPONENT = () => import('/@/views/vent/monitorManager/mainFanMonitor/index.vue');

+ 8 - 0
src/router/guard/permissionGuard.ts

@@ -16,6 +16,7 @@ import { useGlobSetting } from '/@/hooks/setting';
 
 import _ from 'lodash';
 import { mountMicroApp } from '/@/qiankun';
+import { AUTO_LOGIN_URL_QUERY } from '../constant';
 
 const LOGIN_PATH = PageEnum.BASE_LOGIN;
 //auth2登录路由
@@ -106,6 +107,13 @@ export function createPermissionGuard(router: Router) {
         document.title = to.meta.title;
         return;
       }
+      // query中要求自动登录的执行登录逻辑
+      if (to.query[AUTO_LOGIN_URL_QUERY.key] === AUTO_LOGIN_URL_QUERY.val) {
+        const userStore = useUserStoreWithOut();
+        await userStore.autoLogin();
+        next(to.path);
+        return;
+      }
 
       //update-begin---author:wangshuai ---date:20220629  for:[issues/I5BG1I]vue3 Auth2未实现------------
       let path = LOGIN_PATH;

+ 18 - 0
src/store/modules/user.ts

@@ -355,6 +355,24 @@ export const useUserStore = defineStore({
         },
       });
     },
+    async autoLogin() {
+      try {
+        const loginParams = {
+          username: 'autoAdmin',
+          password: 'autoAdmin123',
+          captcha: '1234',
+          checkKey: new Date().getTime(),
+          remember_me: true,
+        };
+        const data = await loginApi(loginParams);
+        const { token } = data;
+        this.setToken(token);
+        const userInfo = data['userInfo'];
+        this.setUserInfo(userInfo);
+      } catch (error) {
+        return Promise.reject(error);
+      }
+    },
   },
 });