SuperAPI AI 工具集

guards

安全与审计

查看项目

更新于 10-16 07:25

技能介绍

该技能面向 NestJS 应用中的请求访问控制,帮助实现认证(验证用户身份)、授权(检查权限与角色)、基于角色或权限保护路由、校验 JWT 或 API Key、自定义访问控制、按请求上下文限制访问、构建 RBAC 系统以及功能开关或条件路由访问。

守卫决定请求是否交由路由处理器处理,实现 CanActivate 接口,canActivate() 返回布尔值(或 Promise/Observable),true 放行、false 拒绝并抛出 ForbiddenException。守卫在中间件之后、拦截器与管道之前执行。

绑定方式包括方法级 @UseGuards(AuthGuard)、控制器级 @UseGuards(AuthGuard) 以及全局守卫(模块中 provide: APP_GUARD,或在 main.ts 使用 app.useGlobalGuards(new AuthGuard()))。多个守卫按从左到右的顺序执行。

常见实现模式:roles.decorator.ts 用 SetMetadata 定义角色元数据,RolesGuard 借助 Reflector 的 getAllAndOverride 读取处理函数与类上的角色要求;JwtAuthGuard 从 Authorization 头提取 Bearer 令牌并用 JwtService.verifyAsync 校验;ApiKeyGuard 校验 x-api-key 头;PermissionsGuard 通过 every 检查所需权限;FeatureFlagGuard 依赖 ConfigService 读取 features 配置;Public 装饰器配合 IS_PUBLIC_KEY 可跳过认证。Reflector 提供 get、getAllAndOverride、getAllAndMerge 读取元数据。

最佳实践包括单一职责、依赖注入、抛出合适异常、使用自定义装饰器、认证先于角色、显式标记公开路由、尽早返回、全局认证、用 getAllAndOverride 缓存元数据以及文档化守卫行为。守卫相较中间件可访问 ExecutionContext、知晓将要执行的处理器、跨 HTTP/WebSocket/微服务传输层工作,更适合认证授权。

资料未提供该技能的安装命令、收费、价格或平台信息。