인프런 커뮤니티 질문&답변

노른자님의 프로필 이미지
노른자

작성한 질문수

탄탄한 백엔드 NestJS, 기초부터 심화까지

JWT와 로그인 서비스 & 순환 참조 모듈

소셜 로그인 구현, 리프레시 토큰에 대하여

작성

·

1.1K

1

1.

현재 카카오 로그인도 구현해보고 싶은데,

쿠키&세션으로 구현(서버 메모리에 저장)은 해봤는데,

jwt를 사용해서는 어떻게 구현해야할지를 모르겠습니다..ㅠㅠ

 

2.

access token, refresh token을 보안상의 이유로 거의 필수적으로 같이 써야한다는데,

access_token이 만료되면 refresh_token을 이용하여 access_token을 새로 발급하는 방식이 어떤식으로 진행되는지 모르겠습니다..

답변 1

0

노른자님의 프로필 이미지
노른자
질문자

1. 나름 구글링 해보면서 이해해봤는데 위 사진처럼 JWT를 발급받은후에는 카카오를 거치지않고 서버에 JWT만 보내면 서버에서 JWT를 해독후 정보를 보내주는것 맞나요??

 

윤상석님의 프로필 이미지
윤상석
지식공유자

네 맞습니다!! refresh_token을 쓴다면, 보통 클라이언트에서 access token이 만료될때를 계산해서 refresh_token을 요청합니다. 백엔드는 refresh token 발급 요청이 들어오면 새로운 access token을 발급해주면 됩니다. JWT 방식은 어떻게 설계하냐에 따라 많이 달라집니다. 아래의 글을 참고하시면 좋을 것 같습니다. https://hudi.blog/self-made-jwt/

노른자님의 프로필 이미지
노른자
질문자

감사합니다!

사소하지만 하나 더 궁금한게

 

import { Injectable } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';

@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {}
 
이런식으로 JwtAuthGuard를 따로 만들어 줘서 @UseGuard(JwtAuthGuard)를 하는것과
만들어주지 않고 바로 그냥 @UseGuard(AuthGuard('jwt'))를 하는것이 차이가 있나요??
둘다 되는것같은데 기왕이면 파일따로 안만들고 두번째처럼 해주는게 깔끔할것같은데,
첫번째처럼 클래스를 따로 만들어주면 성능이 좋아지거나 이점이 있나요??
윤상석님의 프로필 이미지
윤상석
지식공유자

성능 차이 없습니다! 사실 강의에서는 강조하기 위함이 있고 파일 나눔에 있어서 커스텀해서 정의할 수 있기에 상황에 따라서 사용하시면 됩니다!!

노른자님의 프로필 이미지
노른자
질문자

친절한  답변 감사합니다!

노른자님의 프로필 이미지
노른자

작성한 질문수

질문하기