SuperAPI AI 工具集

route-based-permissions

部署与运维

查看项目

更新于 10-15 22:19

技能介绍

用途:提供路由级权限实施的结构性模式,核心是集中式路由清单、守卫组合与嵌套路由继承。前提是已存在基础角色/权限原语(如 can()、requireRole),重点解决如何将检查接入路由树而不分散到各处。

主要能力与模式:1)路由清单,用单一 manifest 映射路由与权限要求,守卫从中读取,避免在 40 个路由定义中内联 requireRole('admin');匹配器优先精确匹配,再按参数化路径归一化匹配。2)守卫组合,将多个独立条件(认证+角色+功能开关+订阅层级)组合为数组从左到右执行,保持单一职责;前端可用包装器 reduceRight 组合。3)嵌套路由继承,React Router 中父守卫通过 Outlet 包裹子路由,子路由免费继承权限;Express 中把父守卫应用到 router.use,注意顺序在路由定义之前。4)Next.js 中间件,通过配置 matcher 做通配与前缀匹配,运行在 Edge 上。

使用方式:先明确每路由守卫数量、路由声明风格(文件式或配置式)、是否嵌套继承、动态段权限依赖对象还是角色、后端类型;再产出 routeManifest.ts、composeGuards.ts 及嵌套继承集成片段。

限制:清单只能表达静态和参数化路由的角色/认证检查,无法表达资源级所有权检查(如 /posts/123 是否属于当前用户),所有权检查必须留在处理器中,且建议对未授权用户返回 404 而非 403,避免确认资源存在。Next.js matcher 的负向预查(如 (?!api/))会跳过 API 路由,API 须自行强制权限。Express 中 router.use() 的顺序很重要,路由定义之后添加的守卫不会保护该路由。

适用场景:需要统一管理路由权限、避免检查散落的前后端应用,尤其是使用 Next.js、React Router、Express/Fastify 的项目。