zhuangyunsheng 1 年之前
父节点
当前提交
ccbc0e7a18
共有 3 个文件被更改,包括 35 次插入34 次删除
  1. 2 2
      .env.development
  2. 28 26
      src/permission.js
  3. 5 6
      src/store/user.js

+ 2 - 2
.env.development

@@ -11,8 +11,8 @@ VITE_BASE_URL = "/dev-api"
 VITE_BASE_MOCK_URL = "/mock-api"
 
 # boot服务端接口路径
-VITE_BASE_SERVER_URL = "http://192.168.101.93:8000"
-# VITE_BASE_SERVER_URL = "http://10.236.2.146:8080/dev-api" # 线上
+# VITE_BASE_SERVER_URL = "http://192.168.101.93:8000"
+VITE_BASE_SERVER_URL = "http://10.236.2.146:8080/dev-api" # 线上
 # VITE_BASE_SERVER_URL = "http://10.206.20.153:8000" # 青岛港-内网 dns: 10.201.192.1
 # VITE_BASE_SERVER_URL = "http://192.168.43.231:8000" # 热点
 # VITE_BASE_SERVER_URL = "http://192.168.1.133:8000" # 青岛港-7楼

+ 28 - 26
src/permission.js

@@ -5,34 +5,36 @@ import { useSettingStore } from "@/store/settings.js"
 import { usePermissionStore } from "@/store/permission.js"
 import { dynamicRoutes } from "@/router/dynamicRoutes"
 
-const whiteList = ["/login", "/yh", "/ssoyh"]
-router.beforeEach((to, from, next) => {
-    if (getToken()) {
-        to.meta.title && useSettingStore().setTitle(to.meta.title)
-        if (useUserStore().roles.length === 0) {
-            useUserStore().RefreshInfo().then(res => {
-                usePermissionStore().generateRoutes().then(accessRoutes => {
-                    accessRoutes.forEach(item => router.addRoute(item))
-                    router.addRoute({
-                        path: "/:pathMatch(.*)*",
-                        name: "notFound",
-                        redirect: "/notfound"
-                    })
-
-                    next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
-                })
-            })
-        } else {
-            next()
-        }
-    } else { // 登录
+const whiteList = ["/login"]; //"/yh", "/ssoyh"
+router.beforeEach(async (to, from, next) => {
+    if (!getToken()) {
         // 白名单放行
-        if (whiteList.indexOf(to.path) !== -1) {
-            next()
-        } else {
-            next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
-        }
+        if (whiteList.indexOf(to.path) !== -1) next();
+        else next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
+        return false;
     }
+
+    if (to.path === "/login") {
+        next(to.query.redirect || "/");
+        return false;
+    }
+
+    to.meta.title && useSettingStore().setTitle(to.meta.title);
+    if (!usePermissionStore().routes.length) {
+        await useUserStore().RefreshInfo();
+        const accessRoutes = await usePermissionStore().generateRoutes();
+        accessRoutes.forEach(item => router.addRoute(item));
+        router.addRoute({
+            path: "/:pathMatch(.*)*",
+            name: "notFound",
+            redirect: "/notfound"
+        });
+
+        next(to);
+        return false
+    }
+
+    next();
 })
 
 router.afterEach(() => {

+ 5 - 6
src/store/user.js

@@ -27,9 +27,10 @@ export const useUserStore = defineStore(
                     login(data).then(res => {
                         setToken(res.access_token)
                         setRefreshToken(res.refresh_token)
-                        this.userInfo = res.user
                         this.token = res.access_token
                         this.refreshToken = res.refresh_token
+                        this.userInfo = res.user
+                        this.roles = res.roles
                         this.menuList = res.menus
                         this.permissions = getButtonPermiss([], res.menus)
                         API.add("登录", "login_system")
@@ -49,15 +50,13 @@ export const useUserStore = defineStore(
                         setToken(res.access_token)
                         setRefreshToken(res.refresh_token)
                         this.token = res.access_token
-                        this.userInfo = res.user
                         this.refreshToken = res.refresh_token
+                        this.userInfo = res.user
                         this.roles = res.roles
                         this.menuList = res.menus
                         this.permissions = getButtonPermiss([], res.menus)
                         resolve(res)
-                    }).catch(error => {
-                        reject(error)
-                    })
+                    }).catch(error => reject(error.error_code))
                 })
             },
             //宝信登录
@@ -116,8 +115,8 @@ export const useUserStore = defineStore(
                         this.token = ""
                         this.refreshToken = ""
                         this.userInfo = {}
-                        this.menuList = []
                         this.roles = []
+                        this.menuList = []
                         this.permissions = []
                         removeToken()
                         removeRefreshToken()