银川网站建设网站建设素材

山东金石节能材料有限公司 2026/09/09 19:40:36

@[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 权限系统应该做到:

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

高端品牌网站建设长沙 网站建设

快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:开发一个面向新手的EACCES错误解决向导应用,要求ÿ

2026/06/30 11:31:26

南京网站建设网站建设工作

宠物管理目录基于springboot + vue宠物管理系统一、前言二、系统功能演示三、技术选型四、其他项目参考五、代码参考六、测试参考七、最新计算机毕设选题推荐八、源码获取:基

2026/06/30 11:49:57

昆明网站建设凯里网站建设

第一章:Open-AutoGLM测试框架概述Open-AutoGLM 是一个面向大语言模型自动化测试的开源框架,专为评估和验证 GLM 系列模型在多样化任务场景下的表现而设

2026/06/30 10:27:20

网站建设与维护网站建设公司哪家好

完成「第一次系统确认」后,就能让后续所有「无障碍开关」+「录屏弹窗」终身不再人工点第二次——核心就是「出厂前一次性授权」三件套:ADB 授予WRITE_SECURE

2026/06/30 11:46:57

建设银行网站住房和城乡建设部网站

系统简介近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步

2026/06/30 13:32:36

免费企业网站建设长沙网站建设

图像编码器微调:CLIP ViT结构适配新领域在医学影像分析的日常工作中,医生常常需要从一张肺部X光片中判断是否存在肺炎迹象,并生成结构化的诊断报告。传统流程

2026/06/30 13:46:07

北京网站建设大良网站建设

土耳其丝绸之路遗产:HunyuanOCR解析奥斯曼帝国档案在伊斯坦布尔国家档案馆的深处,一卷卷泛黄的羊皮纸静静躺在恒温柜中。它们记录着几个世纪前丝绸之路上商队往来、关税协定

2026/06/30 12:48:33

珠海网站建设江门网站建设

为什么PyNifly是游戏模组开发者的秘密武器?【免费下载链接】PyNiflyExport/Import tools between Blender and the Nif format

2026/06/30 10:08:48

建设网站公司中国建设部网站

JAVA无人球杆柜通过物联网、AI与云原生架构的深度融合,以智能化、高效率、强安全的特性,重构了台球器材租赁的商业模式,成为推动行业升级的智能租赁新风尚。以下

2026/06/30 12:17:31

营销网站建设东莞网站建设

整车质量估计算法,采用simulink模型搭建,基于模糊逻辑思想,通过设计合理的模糊控制规则确定质量估计的置信度,当置信度高于某一水平时进行整车

2026/06/30 12:07:00