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'
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
Loading…
Cancel
Save