Pytorch图像去噪实战(七十二):Alertmanager告警实战,接口错误率和GPU显存异常自动通知
2026/5/13 2:50:06
@[toc]
在 Vue 项目里,权限问题永远不是“有没有”,而是“会不会失控”。
一开始可能只是:
但随着业务复杂度上来,很容易演变成:
这篇文章,我们不讲“能跑的权限”,而是讲可扩展、可维护、长期稳定的权限系统设计。
先给一个非常重要的拆分:
权限 = 三件事
这篇文章重点讲第 1 件事:路由权限。
在任何中大型项目里,下面三条原则一定要守住。
路由只声明自己需要什么权限,而不是怎么判断。
meta:{requiresAuth:true,roles:['admin']}绝不分散在页面、组件、API 调用里。
两者相关,但不要强耦合。
{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 权限系统应该做到: