Nest.js - JwtService

level·2023년 8월 31일

TIL

목록 보기
90/95

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는 토큰의 발급 및 만료 날짜 설정, 클레임 추가, 토큰 옵션 설정 등 다양한 기능을 제공한다.

0개의 댓글