Nest.js에서 제공하는 JwtService는 JWT 관련 작업을 쉽게 수행하기 위한 서비스
JwtService를 사용하면 JWT를 생성하고 검증하며, 토큰 내에 포함되는 정보를 다룰 수 있다. 주로 인증 및 권한 부여와 같은 보안 관련 기능을 구현할 때 유용하다.
모듈 설정 및 주입: JwtService를 사용하려면 먼저 @nestjs/jwt 모듈을 설치하고 Nest.js 모듈에 등록하고 해당 서비스를 주입받아 사용할 수 있다.
$ npm install --save @nestjs/jwt
토큰 생성: JwtService를 사용하여 사용자 지정 데이터를 포함한 JWT 토큰을 생성할 수 있다. sign() 메서드를 사용하여 토큰을 생성할 수 있으며, 이 메서드는 페이로드(클레임), 비밀 키, 옵션 등을 인자로 받는다:
import { JwtService } from '@nestjs/jwt';
@Injectable()
export class AuthService {
constructor(private jwtService: JwtService) {}
async generateToken(payload: any): Promise<string> {
return this.jwtService.sign(payload);
}
}
토큰 검증: JwtService를 사용하여 클라이언트가 제공한 토큰의 유효성을 검증할 수 있습니다. verify() 메서드를 사용하여 토큰의 유효성을 확인할 수 있습니다.
@Injectable()
export class AuthService {
constructor(private jwtService: JwtService) {}
async validateToken(token: string): Promise<boolean> {
try {
await this.jwtService.verify(token);
return true;
} catch (error) {
return false;
}
}
}
토큰 해독: JWT 토큰의 페이로드(클레임)를 디코딩하여 내부 데이터를 확인할 수 있습니다.
@Injectable()
export class AuthService {
constructor(private jwtService: JwtService) {}
decodeToken(token: string): any {
return this.jwtService.decode(token);
}
}
이외에도 JwtService는 토큰의 발급 및 만료 날짜 설정, 클레임 추가, 토큰 옵션 설정 등 다양한 기능을 제공한다.