Untitled

1. Guard 클래스

구현 방법 1

@Injectable()
export class AuthGuard {
  async canActivate(context) {
    const request = context.switchToHttp().getRequest();
    return await validateRequest(request);
  }
}

구현 방법 2

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);
  }
}

모든 가드는 canActivate()함수를 구현해야합니다. 이 함수는 현재 요청이 허용되는지 여부를 나타내는 조건값을 반환해야 합니다. 응답을 동기식 또는 비동기식으로 반환 할 수 있습니다 (Promise 또는 Observable을 통해). Nest는 리턴 값을 사용하여 다음 조치를 제어합니다.

2. ExcutionContext

3. 적용

적용 방법1 (함수)

@UseGuards(AuthGuard)
@Get('/:userId')
async getUser(@Param('userId') id: number) {
  const result = await this.userService.findUser(id);
  return ApiResponse.SUCCESS(result);
}
@UseGuard(new AuthGuard())
@Get('/:userId')
async getUser(@Param('userId') id: number) {
  const result = await this.userService.findUser(id);
  return ApiResponse.SUCCESS(result);
}

적용 방법2 (클래스)