Nest?

데코레이터 ( 추후 업데이트, 우선 순위 낮음)

컨트롤러

프로바이더

모듈

//app.module.ts
@Module({
    imports: [
       UserModule,
    ],
    controllers: [],
    providers: [],
})
export class AppModule {
}

// 다른 파일, user.module.ts
@Module({
    controllers: [UserController],
    providers: [UserService],
})
export class LoginModule {
}

Guard

https://www.daleseo.com/nestjs-guards/

가드 작성하기

@Injectable()
export class CookieAuthGuard implements CanActivate {
  constructor(private readonly redisService: RedisService) {}

  async canActivate(context: ExecutionContext): Promise<boolean> {
    const request = context.switchToHttp().getRequest<Request>();
    const sid = request.cookies['sessionId'];
    const loginId = await this.redisService.redisClient.get(sid);
    if (!loginId) {
      throw new UnauthorizedException('인증되지 않은 요청입니다.');
    }

    request['user'] = { loginId };

    return true;
  }
}