[Overview] Guards

999999999·2025년 1월 24일

NestJS Official Docs

목록 보기
8/8
post-thumbnail

link - https://docs.nestjs.com/guards

Authorization guard

// auth.guard.ts
import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Observable } from 'rxjs';

@Injectable()
export class AuthGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ): boolean | Promise<boolean> | Observable<boolean> {
    const request = context.switchToHttp().getRequest();
    return validateRequest(request);
  }
}

Role-based authentication

// roles.guard.ts
import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Observable } from 'rxjs';

@Injectable()
export class RolesGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ): boolean | Promise<boolean> | Observable<boolean> {
    return true;
  }
}

Binding guards

@Controller('cats')
@UseGuards(RolesGuard)
export class CatsController {}


@Controller('cats')
@UseGuards(new RolesGuard())
export class CatsController {}


const app = await NestFactory.create(AppModule);
app.useGlobalGuards(new RolesGuard());

// app.module.ts
import { Module } from '@nestjs/common';
import { APP_GUARD } from '@nestjs/core';

@Module({
  providers: [
    {
      provide: APP_GUARD,
      useClass: RolesGuard,
    },
  ],
})
export class AppModule {}

Setting roles per handler

profile
¯ࡇ¯

0개의 댓글