fix: 🐛 修复登录和路由重复获取用户信息的问题

This commit is contained in:
Ray.Hao
2025-08-14 18:34:56 +08:00
parent 9b8299e895
commit d9b2f55a5e
5 changed files with 10 additions and 21 deletions

View File

@@ -1,6 +1,5 @@
import type { RouteRecordRaw } from "vue-router";
import NProgress from "@/utils/nprogress";
import { Auth } from "@/utils/auth";
import router from "@/router";
import { usePermissionStore, useUserStore } from "@/store";
import { ROLE_ROOT } from "@/constants";
@@ -12,7 +11,8 @@ export function setupPermission() {
NProgress.start();
try {
const isLoggedIn = Auth.isLoggedIn();
// 使用 store 暴露的登录态,便于后续扩展(如基于过期时间等)
const isLoggedIn = useUserStore().isLoggedIn();
// 未登录处理
if (!isLoggedIn) {
@@ -35,16 +35,17 @@ export function setupPermission() {
const permissionStore = usePermissionStore();
const userStore = useUserStore();
// 确保动态路由已生成
// 路由未生成则生成
if (!permissionStore.isDynamicRoutesGenerated) {
/** 先获取最新的用户信息 */
await userStore.getUserInfo();
if (!userStore.userInfo?.roles?.length) {
await userStore.getUserInfo();
}
const dynamicRoutes = await permissionStore.generateRoutes();
dynamicRoutes.forEach((route: RouteRecordRaw) => {
router.addRoute(route);
});
// 路由刚生成,重新导航
next({ ...to, replace: true });
return;
}