From d6b70c6f8ec9a1a20d33d1da8abf27e105d3edb8 Mon Sep 17 00:00:00 2001 From: liruiqiang <3151805288@qq.com> Date: Mon, 17 Nov 2025 17:07:17 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=B7=AF=E7=94=B1=E4=B8=8E?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E5=AE=88=E5=8D=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index 2cdc813..7060ba4 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -2,18 +2,26 @@ import { createRouter, createWebHistory } from 'vue-router' import Layout from '../layout/Layout.vue' const routes = [ - { path: '/', + { + path: '/', redirect: '/userPermissions/market' }, { path: '/login', name: 'login', component: () => import('../views/Login.vue'), - meta: { title: '登录', hiddenSidebar: true } + meta: { + title: '登录', + hiddenSidebar: true, + requireAuth: false // 登录页不需要登录 + } }, { path: '', component: Layout, + meta: { + requireAuth: true // Layout下所有子路由都需要登录 + }, children: [ { path: 'userPermissions', @@ -32,17 +40,33 @@ const routes = [ component: () => import('../views/UserPermissions/Module.vue'), meta: { title: '模块期限', showSidebar: true } }, + // 深度探索--操作日志 { path: 'logDeepexplore', name: 'logDeepexplore', component: () => import('../views/UserPermissions/LogDeepExplore.vue'), meta: { hidden: true } }, + // DeepMate--操作日志 { path: 'logDeepMate', name: 'logDeepMate', component: () => import('../views/UserPermissions/LogDeepMate.vue'), meta: { hidden: true } + }, + // 行情期限--操作日志 + { + path: 'logMarket', + name: 'logMarket', + component: () => import('../views/UserPermissions/LogMarket.vue'), + meta: { hidden: true } + }, + // 导出列表页面 + { + path: 'export', + name: 'export', + component: () => import('../views/UserPermissions/Export.vue'), + meta: { hidden: true } } ] } @@ -55,9 +79,32 @@ const router = createRouter({ routes }) +// 全局前置守卫 router.beforeEach((to, from, next) => { - if (to.meta.title) document.title = to.meta.title - next() + // 设置页面标题 + if (to.meta.title) { + document.title = to.meta.title + } + + // 登录状态判断 + const token = localStorage.getItem('token') + + // 权限拦截逻辑 + if (to.meta.requireAuth) { + // 目标页面需要登录:已登录→放行,未登录→跳登录页 + if (token) { + next() // 已登录,放行 + } else { + next({ path: '/login' }) // 跳登录页 + } + } else { + // 目标页面不需要登录:已登录→跳首页,未登录→放行 + if (token && to.path === '/login') { + next('/') // 自动跳首页 + } else { + next() // 未登录,放行到登录页 + } + } }) export default router \ No newline at end of file