From 7325106ae7eafbb9aa4f6568fb54e3eb2bd48164 Mon Sep 17 00:00:00 2001 From: sion <450702724@qq.com> Date: Sun, 22 Mar 2026 14:22:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.json | 7 +- monisuo-admin/src/composables/use-auth.ts | 2 +- monisuo-admin/src/pages/auth.vue | 8 ++ monisuo-admin/src/pages/auth/sign-in.vue | 97 ++++++++++++++++++++ monisuo-admin/src/router/guard/auth-guard.ts | 27 ++---- monisuo-admin/src/types/route-map.d.ts | 27 ++++++ 6 files changed, 147 insertions(+), 21 deletions(-) create mode 100644 monisuo-admin/src/pages/auth.vue create mode 100644 monisuo-admin/src/pages/auth/sign-in.vue diff --git a/.claude/settings.json b/.claude/settings.json index 846f4f1..6a788cd 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -9,7 +9,12 @@ "mcp__server-mysql__execute", "Bash(git rm:*)", "Bash(git add:*)", - "Bash(npx tsc:*)" + "Bash(npx tsc:*)", + "Bash(pnpm vue-tsc:*)", + "Bash(find node_modules/.pnpm -name *.mjs -path *vue-router*)", + "Bash(grep -r \"routeMeta\\\\|definePage\\\\| + + + + +meta: + layout: false + diff --git a/monisuo-admin/src/pages/auth/sign-in.vue b/monisuo-admin/src/pages/auth/sign-in.vue new file mode 100644 index 0000000..bfae03e --- /dev/null +++ b/monisuo-admin/src/pages/auth/sign-in.vue @@ -0,0 +1,97 @@ + + + + + +meta: + layout: blank + diff --git a/monisuo-admin/src/router/guard/auth-guard.ts b/monisuo-admin/src/router/guard/auth-guard.ts index 38d4e12..9c4932e 100644 --- a/monisuo-admin/src/router/guard/auth-guard.ts +++ b/monisuo-admin/src/router/guard/auth-guard.ts @@ -5,33 +5,22 @@ import { storeToRefs } from 'pinia' import pinia from '@/plugins/pinia/setup' import { useAuthStore } from '@/stores/auth' -// 需要认证的 Monisuo 路由前缀 -const MONISUO_AUTH_ROUTES = ['/monisuo/'] +// 需要认证的路由前缀 +const AUTH_ROUTES = ['/monisuo/', '/dashboard', '/users', '/tasks', '/settings'] export function authGuard(router: Router) { router.beforeEach((to, _from) => { const authStore = useAuthStore(pinia) const { isLogin } = storeToRefs(authStore) - // 检查是否是需要认证的 Monisuo 路由 - const isMonisuoRoute = MONISUO_AUTH_ROUTES.some(prefix => to.path.startsWith(prefix)) + // 检查是否是需要认证的路由 + const needsAuth = to.meta.auth || AUTH_ROUTES.some(prefix => to.path.startsWith(prefix)) // 如果页面需要登录但用户未登录,重定向到登录页并记录原始目标页面 - if ((to.meta.auth || isMonisuoRoute) && !unref(isLogin)) { - // Monisuo 路由重定向到 Monisuo 登录页 - if (isMonisuoRoute && to.name !== '/auth/monisuo-sign-in') { - return { - name: '/auth/monisuo-sign-in', - query: { redirect: to.fullPath }, - } - } - - // 其他需要认证的路由重定向到默认登录页 - if (to.meta.auth && to.name !== '/auth/sign-in') { - return { - name: '/auth/sign-in', - query: { redirect: to.fullPath }, - } + if (needsAuth && !unref(isLogin) && to.name !== '/auth/sign-in') { + return { + name: '/auth/sign-in', + query: { redirect: to.fullPath }, } } }) diff --git a/monisuo-admin/src/types/route-map.d.ts b/monisuo-admin/src/types/route-map.d.ts index d230ec9..16f8164 100644 --- a/monisuo-admin/src/types/route-map.d.ts +++ b/monisuo-admin/src/types/route-map.d.ts @@ -40,6 +40,20 @@ declare module 'vue-router/auto-routes' { { path: ParamValue }, | never >, + '/auth': RouteRecordInfo< + '/auth', + '/auth', + Record, + Record, + | '/auth/sign-in' + >, + '/auth/sign-in': RouteRecordInfo< + '/auth/sign-in', + '/auth/sign-in', + Record, + Record, + | never + >, '/dashboard/': RouteRecordInfo< '/dashboard/', '/dashboard', @@ -128,6 +142,19 @@ declare module 'vue-router/auto-routes' { views: | never } + 'src/pages/auth.vue': { + routes: + | '/auth' + | '/auth/sign-in' + views: + | 'default' + } + 'src/pages/auth/sign-in.vue': { + routes: + | '/auth/sign-in' + views: + | never + } 'src/pages/dashboard/index.vue': { routes: | '/dashboard/'