[TIL] NestJS 공부 32일차

JWT

로그인 인증 서비스를 구현할 때 사용하는 jwt다.
nest에서는 어떻게 사용하는지 확인해보자.

JWT 준비

npm install --save @nestjs/jwt passport-jwt
npm install --save-dev @types/passport-jwt

JWT 기초

auth.service.ts파일을 수정해주자. constructor안의 인터페이스를 약간 수정해주고 login()메서드를 추가한 것이다. 로그인 괄호 안은 user:any지만, 변수 선언 방식에 따라 다른 것으로 validateUser()처럼 변수 명을 입력하는 방법도 작동하는 것을 확인했다.

login()메서드를 본격적으로 확인하자.
return 부분을 확인하면 되는데 jwtService@nestjs/jwt에서 가져온 것으로 sign()메서드로 accesstoken을 반환하는 메서드다.
위 코드는 내가 일반 express를 사용할 때 발급하던 코드 부분이다. 우선 발급 키나 만료 시간을 정하지 않았으니 아직 미완성 코드라고 생각된다.
조금 더 자세히 공부해보자.

JWT 완성

auth폴더 안에 auth.constants.ts를 만들어 secret을 반환하게 작성한다.
키를 공유하게 만들 것인데 아까 express의 코드에선 env를 사용했지만 여기선 파일로 사용하는 것 같다.

이제 파일을 생성했으니 auth.module.ts에서 파일 업데이트를 시켜주자.
파일이 상당히 많이 바뀌었다. 차근차근 확인하자면 register()인데 secret키와 signOptions를 사용하여 키 확인 및 만료 시간을 설정할 수 있다. 옵션들이 더 많지만 굳이 적을 필요가 없기에 이렇게 적은 것 같다.
이렇게 register()메서드를 이용하여 JWTModule을 구성할 수 있고 구성된 모듈을 AuthService에 있는 sign()메서드와 함께 반환시켜 사용할 수 있게해준다.

JWT 사용 예제

controller에서 사용해보자.
app.controller.ts에서 코드 수정을 조금 해주자.

이후 포스트맨을 이용하여 확인해보면 토큰 발급을 확인할 수 있다.

좋은 웹페이지 즐겨찾기