浏览代码

[Fix 0000] 修复重定向后404的问题

houzekong 7 月之前
父节点
当前提交
b512b4a687
共有 3 个文件被更改,包括 16 次插入11 次删除
  1. 7 7
      src/hooks/vent/useAutoLogin.ts
  2. 8 3
      src/router/guard/permissionGuard.ts
  3. 1 1
      src/views/vent/home/billboard/index.vue

+ 7 - 7
src/hooks/vent/useAutoLogin.ts

@@ -18,13 +18,13 @@ export function useAutoLogin() {
     window.open(`${url}?${qs}`, target);
   }
 
-  /** 用在路由守卫里,执行自动登录的逻辑,如果存在符合自动登录标准的query则执行自动登录,返回是否需要重定向 */
-  async function doAutoLogin(route: RouteLocationNormalized): Promise<void> {
-    if (!route.query) return;
-    if (route.query[AUTO_LOGIN_URL_QUERY.key] !== AUTO_LOGIN_URL_QUERY.val) return;
+  /** 用在路由守卫里,执行自动登录的逻辑,如果存在符合自动登录标准的query则执行自动登录,返回是否自动登录 */
+  async function doAutoLogin(route: RouteLocationNormalized): Promise<boolean> {
+    if (!route.query) return false;
+    if (route.query[AUTO_LOGIN_URL_QUERY.key] !== AUTO_LOGIN_URL_QUERY.val) return false;
 
     const { username, workNo } = route.query;
-    if (!username || !workNo) return;
+    if (!username || !workNo) return false;
 
     const params = {
       username: username as string,
@@ -37,11 +37,11 @@ export function useAutoLogin() {
         ...params,
         goHome: false,
       });
-      return;
+      return true;
     } catch (e) {
       const message = useMessage().createMessage;
       message.error((e as AxiosError).message);
-      return;
+      throw e;
     }
   }
 

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

@@ -62,7 +62,11 @@ export function createPermissionGuard(router: Router) {
     }
 
     // 如果符合自动登录的相关条件则直接执行自动登录,覆盖原有的登录信息
-    await doAutoLogin(to);
+    const logged = await doAutoLogin(to);
+    if (logged) {
+      // 自动登录后会动态添加路由,此处应当重定向到fullPath,否则会加载404页面内容
+      return { path: to.fullPath, replace: true, query: to.query };
+    }
 
     const token = userStore.getToken;
 
@@ -95,7 +99,6 @@ export function createPermissionGuard(router: Router) {
         ///
 
         //update-end---author:wangshuai ---date:20230224  for:[QQYUN-3440]新建企业微信和钉钉配置表,通过租户模式隔离------------
-        return true;
         //update-end---author:wangshuai ---date:20220629  for:[issues/I5BG1I]vue3不支持auth2登录------------
       }
       document.title = to.meta.title;
@@ -222,12 +225,13 @@ export function createPermissionGuard(router: Router) {
         return true;
       }
     }
+
     if (permissionStore.getIsDynamicAddedRoute) {
-      // mountMicroApp(to.path);
       document.title = to.meta.title;
       return true;
     }
 
+    // 如果没有在登录时正确的添加动态路由,则在守卫里添加下
     const routes = await permissionStore.buildRoutesAction();
 
     routes.forEach((route) => {
@@ -240,6 +244,7 @@ export function createPermissionGuard(router: Router) {
     permissionStore.setDynamicAddedRoute(true);
 
     if (to.name === PAGE_NOT_FOUND_ROUTE.name) {
+      // mountMicroApp(to.path);
       // 动态添加路由后,此处应当重定向到fullPath,否则会加载404页面内容
       return { path: to.fullPath, replace: true, query: to.query };
     } else {

+ 1 - 1
src/views/vent/home/billboard/index.vue

@@ -136,7 +136,7 @@
   // 页面跳转
   function openHandler(ip: string) {
     // const url = `http://localhost:3100/login`;
-    const url = `http://${ip}:8092/${routePathMap[props.billboardType]}`;
+    const url = `http://${ip}:8092${routePathMap[props.billboardType]}`;
     open(url);
   }