Explorar o código

修改登录额重定向

wangfumin hai 2 semanas
pai
achega
24be5db1e1
Modificáronse 2 ficheiros con 8 adicións e 2 borrados
  1. 1 0
      src/request/index.ts
  2. 7 2
      src/view/system/login.vue

+ 1 - 0
src/request/index.ts

@@ -100,6 +100,7 @@ axios.interceptors.request.use(async (config) => {
     if (!offline) {
       if (!token && !~notLoginUrls.indexOf(config.url) && !shareBypassLogin) {
         const redirect = window.location.href;
+        console.log(redirect, 'redirect')
         router.replace({ name: RouteName.login, query: { redirect } });
         throw "用户未登录";
       }

+ 7 - 2
src/view/system/login.vue

@@ -140,10 +140,15 @@ const submitClick = async () => {
 
     const params: any = router.currentRoute.value.query;
     if ("redirect" in params && params.redirect) {
-      const url = new URL(decodeURIComponent(params.redirect as string));
+      const rawRedirect = decodeURIComponent(params.redirect as string);
+      const outerUrl = new URL(rawRedirect, window.location.origin);
+      const nested = outerUrl.searchParams.get("redirect");
+      const finalRedirect = nested ? decodeURIComponent(nested) : rawRedirect;
+
+      const url = new URL(finalRedirect, window.location.origin);
       url.searchParams.delete("token");
       // url.searchParams.append("token", user.value.token);
-      window.localStorage.setItem('token', user.value.token)
+      window.localStorage.setItem("token", user.value.token);
       window.location.replace(url);
     } else {
       router.replace({ name: RouteName.dispatch });