permission-core Auth 接入
本示例展示如何把 permission-core 接入 VextJS Auth。Vext 的认证与路由保护是分层的:
auth()负责解析 Bearer token,并填充req.auth。permission-core负责invoke + GET:/api/posts这类授权判断。RouteOptions.auth声明某条路由需要 Vext 执行的保护规则。
已验证的外部消费者项目是 vext-test:对应 src/plugins/permission.ts、src/middlewares/permission-core-auth.ts、src/routes/auth-context.ts,以及 verify.mjs 的 #246-#250。
1. 安装
演示或测试项目可以使用 MemoryAdapter。生产环境请按 permission-core 生产部署文档选择持久化 storage adapter,并接入 permission-core 推荐的 cache-hub + monsqlize 栈。
2. 创建 permission 插件
3. 用 auth() 连接 permission-core
在 src/config/default.ts 注册中间件名:
4. 使用 RouteOptions.auth 保护路由
RouteOptions.auth 是推荐的路由保护契约。旧的 openapi.guardSecurityMap 仍可兼容只靠 middleware 名称推断 security 的历史示例,但新代码应把 security 写在 auth.security,让运行时保护和 OpenAPI 输出共用同一个真相源。
5. 在 handler 内直接 assert()
当某条路由还需要在 handler 内做额外判断时,可以使用 req.auth.assert():
如果 permission-core 拒绝该操作,Vext 会沿 Auth guard 路径返回 AUTH_FORBIDDEN。
6. 验证
同一接入链路已经由 vext-test 覆盖:
相关断言如下:
#246身份填充与安全 request context 快照#247permission-corecan()放行#248permission-corecan()拒绝#249缺失、malformed、unknown token 错误码#250req.auth.assert()与 OpenAPIbearerAuth