[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
에서 코드 수정을 조금 해주자.
이후 포스트맨을 이용하여 확인해보면 토큰 발급을 확인할 수 있다.
Author And Source
이 문제에 관하여([TIL] NestJS 공부 32일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ingyocode/TIL-NestJS-공부-32일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)