ananzhusen преди 1 година
родител
ревизия
c683dfcfed
променени са 3 файла, в които са добавени 34 реда и са изтрити 28 реда
  1. 2 1
      src/http.ts
  2. 26 25
      src/services/user.ts
  3. 6 2
      src/views/components/View.vue

+ 2 - 1
src/http.ts

@@ -58,7 +58,8 @@ axios.interceptors.response.use(
       switch (error.response.status) {
         case 401:
           sessionStorage.setItem('cb', encodeURIComponent(location.href));
-          router.replace({ path: '/login' });
+          MessagePlugin.error('请先登录!');
+          // router.replace({ path: '/login' });
           break;
         case 403:
           MessagePlugin.error('请求错误,不合法的请求!');

+ 26 - 25
src/services/user.ts

@@ -45,6 +45,30 @@ const message = reactive<{ unread: number }>({
   unread: 0,
 });
 
+export const getRootDomain = () => {
+  let domain = '';
+  const domainItems = location.hostname.split('.');
+  if (
+    domainItems.length < 3 ||
+    (domainItems.length === 4 &&
+      +domainItems[0] > 0 &&
+      +domainItems[1] > 0 &&
+      +domainItems[2] > 0 &&
+      +domainItems[3] > 0)
+  ) {
+    domain = location.hostname;
+  } else if (
+    location.hostname.endsWith('.com.cn') ||
+    location.hostname.endsWith('.org.cn')
+  ) {
+    domain = domainItems.slice(-3).join('.');
+  } else {
+    domain = domainItems.slice(-2).join('.');
+  }
+
+  return domain;
+};
+
 export const useUser = () => {
   const getUser = async (token?: boolean) => {
     const params: any = {};
@@ -120,32 +144,9 @@ export const useUser = () => {
         domain: domain, //'le5le.com',
       });
     }
+    globalThis.deleteCookie = deleteCookie;
 
-    router.replace({ path: '/login', query: router.currentRoute.value.query });
-  };
-
-  const getRootDomain = () => {
-    let domain = '';
-    const domainItems = location.hostname.split('.');
-    if (
-      domainItems.length < 3 ||
-      (domainItems.length === 4 &&
-        +domainItems[0] > 0 &&
-        +domainItems[1] > 0 &&
-        +domainItems[2] > 0 &&
-        +domainItems[3] > 0)
-    ) {
-      domain = location.hostname;
-    } else if (
-      location.hostname.endsWith('.com.cn') ||
-      location.hostname.endsWith('.org.cn')
-    ) {
-      domain = domainItems.slice(-3).join('.');
-    } else {
-      domain = domainItems.slice(-2).join('.');
-    }
-
-    return domain;
+    // router.replace({ path: '/login', query: router.currentRoute.value.query });
   };
 
   return {

+ 6 - 2
src/views/components/View.vue

@@ -739,7 +739,7 @@ import axios from 'axios';
 import { MessagePlugin } from 'tdesign-vue-next';
 
 import { registerBasicDiagram } from '@/services/register';
-import { useUser } from '@/services/user';
+import { useUser, getRootDomain } from '@/services/user';
 import {
   cdn,
   getComponents,
@@ -849,7 +849,11 @@ const watcher = watch(
 const open = async (flag: boolean = false) => {
   if (route.query.token) {
     localStorage.setItem('token', route.query.token + '');
-    setCookie('token', route.query.token + '');
+    // setCookie('token', route.query.token + '');
+    setCookie('token', route.query.token + '', {
+      path: '/',
+      domain: getRootDomain(),
+    });
     getUser();
     const newQuery = { ...route.query };
     delete newQuery.token;