news 2026/6/15 18:02:16

Vue Router 权限系统设计实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue Router 权限系统设计实战

@[toc]

在 Vue 项目里,权限问题永远不是“有没有”,而是“会不会失控”

一开始可能只是:

  • 登录校验
  • 菜单控制
  • 页面访问限制

但随着业务复杂度上来,很容易演变成:

  • 路由守卫越写越多
  • 页面里到处是 if (hasPermission)
  • 前后端权限逻辑不一致

这篇文章,我们不讲“能跑的权限”,而是讲可扩展、可维护、长期稳定的权限系统设计

一、先明确:权限系统到底在管什么?

先给一个非常重要的拆分:

权限 = 三件事

  1. 能不能进这个路由
  2. 能不能看到这个页面的入口
  3. 能不能执行某个操作(按钮级)

这篇文章重点讲第 1 件事:路由权限

二、权限设计的核心原则

在任何中大型项目里,下面三条原则一定要守住。

原则一:权限是“声明式”的

路由只声明自己需要什么权限,而不是怎么判断。

meta:{requiresAuth:true,roles:['admin']}

原则二:权限判断逻辑集中

绝不分散在页面、组件、API 调用里。

原则三:路由权限 ≠ 菜单权限

  • 路由权限:是否允许访问 URL
  • 菜单权限:是否展示入口

两者相关,但不要强耦合。

三、基础路由权限模型

路由声明

{path:'/admin',component:()=>import('@/views/admin/index.vue'),meta:{requiresAuth:true,roles:['admin']}}

全局守卫

router.beforeEach((to,from,next)=>{if(to.meta.requiresAuth&&!isLogin()){returnnext('/login')}next()})

这是最基础的一层,但还远远不够。

四、角色权限系统的正确写法

权限判断函数集中化

functionhasPermission(routeRoles:string[]){constuserRoles=getUserRoles()returnrouteRoles.some(role=>userRoles.includes(role))}

权限守卫

router.beforeEach((to,from,next)=>{const{roles}=to.metaif(roles&&!hasPermission(roles)){returnnext('/403')}next()})

好处:

  • 权限逻辑只有一个入口
  • 改规则不用全局搜代码

五、动态路由与后端权限

中后台项目几乎都会遇到:

路由由后端返回,前端动态注册

后端返回示例

[{"path":"/order","component":"order/index","roles":["admin"]}]

前端动态注册

constasyncRoutes=mapBackendRoutes(routesFromServer)asyncRoutes.forEach(route=>{router.addRoute(route)})

关键点

  • 前端仍然保留权限校验
  • 后端负责“能看到什么”
  • 前端负责“能不能访问”

六、权限与页面逻辑解耦

错误示例:

<button v-if="user.role === 'admin'">删除</button>

正确做法:

constcanDelete=usePermission('delete_order')

统一用权限 Hook / 方法,避免散落逻辑。

七、实战总结

一个稳定的 Vue Router 权限系统应该做到:

  • 路由声明权限
  • 守卫集中判断
  • 页面不感知权限逻辑
  • 支持后端动态配置
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:53:54

13、大规模并行量子计算软件的探索与应用

大规模并行量子计算软件的探索与应用 1. 引言 量子计算具备解决以往难以处理问题的潜力,例如大数分解、在大型搜索空间中高效寻找最优解、对量子力学系统进行建模和模拟,以及求解大型方程组等。然而,当前的量子计算机尚无法超越经典计算机,原因主要有以下几点: - 量子算…

作者头像 李华
网站建设 2026/6/12 23:25:06

21、量子退火在机器学习分类中的应用与优势

量子退火在机器学习分类中的应用与优势 1. 量子退火在不同领域的应用 1.1 癌症类型分类 研究人员利用 D-wave 2000Q 实现的量子退火进行癌症类型分类。在相关工作中,使用 D-wave 的量子退火子程序为受限玻尔兹曼机(RBM)生成模型期望,并与多种经典机器学习算法进行性能比…

作者头像 李华
网站建设 2026/6/13 11:55:09

Kotaemon支持SSO单点登录集成

Kotaemon支持SSO单点登录集成 在企业智能系统日益复杂的今天&#xff0c;用户每天面对的不仅仅是几十个应用入口&#xff0c;还有随之而来的密码疲劳、重复认证和权限混乱。尤其当智能对话代理如Kotaemon被部署到客服中心、知识库平台或内部协作工具中时&#xff0c;如果还要求…

作者头像 李华
网站建设 2026/6/15 7:53:22

C#:面向对象编程语言四大特征之继承

面向对象编程语言四大特征&#xff1a;封装&#xff1a;把一些属性和方法封装在一个类里面&#xff0c;这个时候对类的封装&#xff0c;方法的封装把一些相关代码写在一个代码块里面&#xff0c;通过方法名进行调用。继承:当我们一些想添加一些属性&#xff0c;但是这些属性已经…

作者头像 李华
网站建设 2026/6/15 7:16:32

Kotaemon非遗文化问答机器人创意提案

Kotaemon非遗文化问答机器人创意提案 在博物馆的互动展区&#xff0c;一个孩子仰头问&#xff1a;“妈妈&#xff0c;皮影戏是怎么变出那么多颜色的&#xff1f;”母亲一时语塞。如果这时旁边的服务终端能立刻回应&#xff0c;并播放一段动态演示&#xff0c;甚至让孩子亲手“操…

作者头像 李华
网站建设 2026/6/15 12:38:17

Kotaemon助力科研人员快速检索学术文献

Kotaemon&#xff1a;科研人员的智能文献助手 在人工智能日新月异的今天&#xff0c;每天都有成千上万篇新的学术论文发布。对于科研人员而言&#xff0c;跟上领域进展早已不是“读几篇顶会文章”那么简单——信息过载已成为常态。更棘手的是&#xff0c;传统搜索引擎只能返回孤…

作者头像 李华