반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Nestjs
- socket
- type challenge
- javascript
- HTTP
- 소켓
- Node.js
- 프로그래머스
- 알고리즘
- 자바스크립트
- ip
- 백준
- Crawling
- TCP
- typescript
- dfs
- 가천대
- 쉬운 문제
- HTTP 완벽 가이드
- 프로그래머스 레벨 2
- dp
- 그래프
- 타입 챌린지
- Algorithm
- 수학
- 레벨 1
- 문자열
- BFS
- 크롤링
- 타입스크립트
Archives
- Today
- Total
kakasoo
Strategy, AuthGuard에서 에러 커스텀하기 본문
반응형
import { BadRequestException, ExecutionContext, Injectable } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { ERROR } from '@root/config/constant/error';
import { DecodedUserToken } from '@root/types';
@Injectable()
export class JwtGuard extends AuthGuard('jwt') {
handleRequest<TUser = DecodedUserToken>(
err: any,
user: any,
info: any,
context: ExecutionContext,
status?: any,
): TUser {
if (info?.message === 'No auth token') {
throw new BadRequestException(ERROR.NO_AUTH_TOKEN);
}
return super.handleRequest(err, user, info, context, status);
}
}
보통은 JwtAuthGuard, LocalAuthGuard 등등을 커스텀할 일 없이, 그저 AuthGuard를 확장하는 인터페이스로만 사용한다.
이 때 만약 에러를 직접 커스텀하고 싶다면, handleRequest 메서드를 보충해주면 된다.
handleRequest는 TUser 라는 타입 파라미터를 받아 TUser를 반환하는 메서드로, 즉, 유저를 반환한다고 보면 된다.
이 유저라는 것은 strategy를 거쳐서 해독된 유저 데이터이기 때문에, 여기서 err, user, info, context 를 파악해 에러를 커스텀한다.
위 코드는 인증 실패인 Unauthorization을 내가 원하는 형태로 바꾸기 위해 추가한 코드다.
return 의 super.handleRequest()는 그 외에 내가 커스텀할 게 없기 때문에 원래 구현된 대로 동작하게끔 유도하는 구문이다.
반응형
'프로그래밍 > NestJS' 카테고리의 다른 글
NestJS에서 S3로 이미지 업로드하기 (0) | 2023.01.31 |
---|---|
NestJS 스웨거에서 에러 스키마 작성하기 (0) | 2023.01.31 |
NestJS 모듈 배포를 위한 코드 작성 (0) | 2023.01.11 |
NestJS에 SpreadSheet API 사용하기 (0) | 2023.01.01 |
class-validator로 특정 날짜 검증하기 (0) | 2023.01.01 |