Browse Source

配置路由与路由守卫

milestone-20251117-DeepChart后台一期
liruiqiang 2 months ago
parent
commit
d6b70c6f8e
  1. 55
      src/router/index.js

55
src/router/index.js

@ -2,18 +2,26 @@ import { createRouter, createWebHistory } from 'vue-router'
import Layout from '../layout/Layout.vue' import Layout from '../layout/Layout.vue'
const routes = [ const routes = [
{ path: '/',
{
path: '/',
redirect: '/userPermissions/market' redirect: '/userPermissions/market'
}, },
{ {
path: '/login', path: '/login',
name: 'login', name: 'login',
component: () => import('../views/Login.vue'), component: () => import('../views/Login.vue'),
meta: { title: '登录', hiddenSidebar: true }
meta: {
title: '登录',
hiddenSidebar: true,
requireAuth: false // 登录页不需要登录
}
}, },
{ {
path: '', path: '',
component: Layout, component: Layout,
meta: {
requireAuth: true // Layout下所有子路由都需要登录
},
children: [ children: [
{ {
path: 'userPermissions', path: 'userPermissions',
@ -32,17 +40,33 @@ const routes = [
component: () => import('../views/UserPermissions/Module.vue'), component: () => import('../views/UserPermissions/Module.vue'),
meta: { title: '模块期限', showSidebar: true } meta: { title: '模块期限', showSidebar: true }
}, },
// 深度探索--操作日志
{ {
path: 'logDeepexplore', path: 'logDeepexplore',
name: 'logDeepexplore', name: 'logDeepexplore',
component: () => import('../views/UserPermissions/LogDeepExplore.vue'), component: () => import('../views/UserPermissions/LogDeepExplore.vue'),
meta: { hidden: true } meta: { hidden: true }
}, },
// DeepMate--操作日志
{ {
path: 'logDeepMate', path: 'logDeepMate',
name: 'logDeepMate', name: 'logDeepMate',
component: () => import('../views/UserPermissions/LogDeepMate.vue'), component: () => import('../views/UserPermissions/LogDeepMate.vue'),
meta: { hidden: true } 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 routes
}) })
// 全局前置守卫
router.beforeEach((to, from, next) => { 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 export default router
Loading…
Cancel
Save