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

hikenike님의 프로필 이미지
hikenike

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

refresh token db 저장

작성

·

1.3K

0

강의 내용중엔 빠졌지만 refresh token을 db에 저장해야하는것으로 알고있는데요

테이블 설계시 refresh 토큰을 User 테이블 내에 칼럼으로 넣을까 생각을했었는데

의미가 맞지않는것같아서요

 

아래처럼 one to one 관계로 해서 관리하는건 올바른 방법일까요?

class TokenModel {
  @PrimaryGenerateKey()
  @OneToOne(() => UserModel, user => user.refresh)
  id: string;

  @Column()
  refreshToken: string;
}

class User {
  ...

 @OneToOne(() => TokenModel, token => token.id)
 refresh: TokenModel
}

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

토큰은 DB에 저장하지 않습니다.

JWT를 쓰는 이유가 시그니처로 자체 검증이 가능하기 때문이라 따로 매핑이 필요 없습니다.

다만 보안적인 제스처로 저장을 하는 경우가 있는데 이는 어떤 사용자의 토큰인지 알기위함이 아닙니다.

예를들어 특정 토큰이 탈취 됐을 경우 해당 토큰을 더이상 사용하지 못하도록 해야 할 수 있습니다. 이럴때 블랙 리스팅을 해야하는데 SQL같은 디비보다 휘발성이 강한 Redis 같은 인메모리 데이터베이스를 더 많이 사용합니다.

감사합니다!

hikenike님의 프로필 이미지
hikenike

작성한 질문수

질문하기