阅读 94

Nest.js

  • Restful API接口
    • @ApiBearerAuth()
      • 用在controller类上
    • @Controller()
      • 用在controller类上
    • @Get(‘/xx/:id/yyy’)
      • 用在方法上
    • @ApiQuery({ name: ‘size’, required: true})
      • 用在方法上
    • @Query(‘size’) size: number = 10
      • 用在方法的参数列表中
  • 授权(scope/role)检查
    • 使用guards
      • guards 守卫,守卫在中间件之后,管道之前执行,守卫返回true或者false,从而决定请求是否给下文执行
      • 使用
        • 自定义的guard类

          • 在controller类上,使用@UseGuards装饰器指定自定义的guard类:@UseGuards(XxxGuard),如@UseGuards(PermissionGuard)
          • 定义(如PermissionGuard
          @Injectable()
          export class PermissionGuard implements CanActive {
              constructor(private reflector: Reflector)
          
              canActivate(context: ExecutionContext): Boolean {
                  // 提取装饰器参数备用
                  const requiredPermissions = this.reflector.getAllAndMerge(‘permissions‘, [
                   context.getHandler(),
                   context.getClass(),
                  ]);
          
                  // 提取请求参数备用
                  const { request } = context.switchToHttp().getRequest();
          
                  // 权限检查逻辑
                  const result = requiredPermissions.some((permission) => reuqest?.claim?.includes(permission))
                  return result;
              }
          }
          
        • 自定义的权限检查装饰器

          • 如@CheckPolicies(params)或@RequirePermissions(params),参数可以是一个需要拥有的权限数组,或者一个对象
          • export const RequirePermissions = (…permissions: string[]) => SetMetadata(“permissions”, permissions))
          • 在controller类或controller方法上使用它进行装饰
  • swagger
  • 依赖注入
    • 可以在main.ts中像.net core一样定义第三方依赖,如app.useGlobalGuards(new JwtAuthGuard());

原文:https://www.cnblogs.com/wyp1988/p/14863900.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐