이번 포스팅에서는 NestJS에서 Json Web Token을 발급해 보도록 하자.
우선 NestJS용 jwt를 npm을 통해 설치해 준다.
$ npm install --save @nestjs/jwt
위의 라이브러리를 설치하고 나면, @nestjs/jwt에서 JwtModule과 jwtService를 통해 JWT를 발급할 수 있다.
AuthModule에 JwtModule을 임포트해서 .register를 이용해 어떤 secret키와 어떤 옵션을 쓸 것인지 정의해 두고,
로그인에서 토큰발급이 필요한 곳에 '@nestjs/jwt'에서 jwtService를 임포트 해와서 아래와 같이 사용하면 토큰을 발급해 줄 수있다.
정상동작 하는지 간단하게 확인해 보면 짜잔 굉장히 쉽게 JWT토큰을 발급 시킬 수 있다.
필자를 accessToken과 refreshToken발급을 위해 JwtModule을 2개 임포트 했었는데, 이럴때는 주의점이 존재했다.
위의 코드와 같이 expiresIn시간을 양쪽을 다르게 설정해 두었지만, 토큰을 생성하는 곳에서 시간을 정해주지 않으면, 두번째 모듈에서의 만료시간도 첫번째 모듈의 시간을 따라가게 되는 문제가 발생했었다.
따라서 토큰의 생성을 두개로 나눠야 할 경우에는 반드시 사용하는 함수내의 jwt.Service.sign에서 옵션으로 만료시간을 작성해 주어야만 한다.