NestJS
JWT를 구현해보자(2)
Dev Park
3/21/2023
24 views
서론
저번 게시글에서는 JWT 세팅까지 해보았다.
이번에는 JWT를 실제로 발급받아보자.
JWT 발급
JWT 발급을 받기 위해서는 우선 사용자 정보가 옯바른지 확인해야한다.
typescript1 async validateUser(loginDto: LoginDto): Promise<User | null> { 2 const user = await this.userRepository.findOne({ where: { email: loginDto.email } }); 3 4 if (user) { 5 if ((await this.comparePasswords(loginDto.password, user.password))) { 6 return user; 7 } 8 } 9 10 return null; 11 }
위의 코드로 사용자 이메일과 비밀번호가 올바른지 확인한다.
그리고 아래 코드를 통해 토큰을 발급한다.
typescript1 async login(user: User): Promise<JwtTokenDto> { 2 const payload: Payload = { email: user.email, sub: user.name }; 3 const accessToken: JwtTokenDto = { 4 accessToken: this.jwtService.sign( 5 payload, 6 ), 7 }; 8 return accessToken; 9 }
그리고 해당 코드를 실행시킬 컨트롤러 코드도 작성한다.
typescript1 @Post('login') 2 @UsePipes(ValidationPipe) 3 async login( 4 @Body() loginDto: LoginDto 5 ): Promise<object> { 6 const user: User | string = await this.authService.validateUser(loginDto); 7 if (!user) { 8 throw new UnauthorizedException('Invalid email or password'); 9 } 10 if (user.is_authed !== 1) { 11 throw new UnauthorizedException('Not Authorization'); 12 } 13 14 return this.authService.login(user); 15 };
위의 코드를 실행시키면 아래와 같이 코드를 반환한다.
image
마치며
오늘은 토큰을 발급받아 보았다.
다음 게시글에서는 발급받은 토큰을 어떻게 이용하는지 알아보자.