Spaces:
Sleeping
Sleeping
| import { createRouter, createWebHashHistory } from 'vue-router' | |
| import { useAuthStore } from '@/stores/auth' | |
| const router = createRouter({ | |
| history: createWebHashHistory(import.meta.env.BASE_URL), | |
| routes: [ | |
| { | |
| path: '/public/uptime', | |
| name: 'public-uptime', | |
| component: () => import('@/views/PublicUptime.vue'), | |
| meta: { requiresAuth: false }, | |
| }, | |
| { | |
| path: '/public/logs', | |
| name: 'public-logs', | |
| component: () => import('@/views/PublicLogs.vue'), | |
| meta: { requiresAuth: false }, | |
| }, | |
| { | |
| path: '/login', | |
| name: 'login', | |
| component: () => import('@/views/Login.vue'), | |
| meta: { requiresAuth: false }, | |
| }, | |
| { | |
| path: '/', | |
| component: () => import('@/layouts/AppShell.vue'), | |
| meta: { requiresAuth: true }, | |
| children: [ | |
| { | |
| path: '', | |
| name: 'dashboard', | |
| component: () => import('@/views/Dashboard.vue'), | |
| }, | |
| { | |
| path: 'accounts', | |
| name: 'accounts', | |
| component: () => import('@/views/Accounts.vue'), | |
| }, | |
| { | |
| path: 'settings', | |
| name: 'settings', | |
| component: () => import('@/views/Settings.vue'), | |
| }, | |
| { | |
| path: 'logs', | |
| name: 'logs', | |
| component: () => import('@/views/Logs.vue'), | |
| }, | |
| { | |
| path: 'monitor', | |
| name: 'monitor', | |
| component: () => import('@/views/Monitor.vue'), | |
| }, | |
| { | |
| path: 'docs', | |
| name: 'docs', | |
| component: () => import('@/views/Docs.vue'), | |
| }, | |
| { | |
| path: 'gallery', | |
| name: 'gallery', | |
| component: () => import('@/views/Gallery.vue'), | |
| }, | |
| ], | |
| }, | |
| ], | |
| }) | |
| // 路由守卫 | |
| router.beforeEach(async (to) => { | |
| const authStore = useAuthStore() | |
| // 需要认证的路由 | |
| if (to.meta.requiresAuth) { | |
| const isAuthenticated = await authStore.checkAuth() | |
| if (!isAuthenticated) { | |
| return { name: 'login' } | |
| } | |
| } | |
| // 已登录用户访问登录页,重定向到首页 | |
| if (to.name === 'login' && authStore.isLoggedIn) { | |
| return { name: 'dashboard' } | |
| } | |
| }) | |
| export default router | |