개발 공부/NestJS
JWT Guard 에러 메세지 커스텀
게으른 제이
2023. 4. 3. 06:08
개요
JWT 인증 에러시 메세지가 "Unauthorized"로 통일 되서 나오는게 싫었다.
스택오버플로우 참고, AuthGuard의 handleRequest 메서드를 사용하여 에러 메세지를 변경하였다.
아래 예제에는 토큰 만료 에러만 분기 처리를 했지만 그 외의 상황도 추가할 예정이다.
import { Injectable, UnauthorizedException } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { TokenExpiredError } from 'jsonwebtoken';
@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {
handleRequest(err: any, user: any, info: any, context: any, status: any) {
if (info instanceof TokenExpiredError) {
throw new UnauthorizedException('유효 시간이 만료된 토큰 입니다.');
}
return super.handleRequest(err, user, info, context, status);
}
}