inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

Access Token 재발급

Member에 refreshToken 질문 드립니다.

496

JoonHo Kim

작성한 질문수 6

0

  1. Member에 refreshToken 값이 칼럼으로 생성되어 있는데요. DB에 refreshToken이 최초 저장되는 시점이 언제인가요?

@Column(length = 250)
private String refreshToken;

 

  1. updateRefreshToken을 하게 되면 DB에는 따로 저장하지 않나요?

public void updateRefreshToken(JwtTokenDto jwtTokenDto) {
    this.refreshToken = jwtTokenDto.getRefreshToken();
    this.tokenExpirationTime = DateTimeUtils.convertToLocalDateTime(jwtTokenDto.getRefreshTokenExpireTime());
}
  1. Member에 tokenExpirationTime은 refresh token의 만료시간을 의미하는건가요?

private LocalDateTime tokenExpirationTime;

spring-boot JPA web-api

답변 1

0

구파고

안녕하세요 리프레시토큰 만료시간을 의미하는 컬럼입니다.

1

JoonHo Kim

질문 수정하였습니다. 추가 확인 부탁드립니다.!

1

구파고

  1. 최초 생성시점은 회원가입할때입니다.

  2. Update를하고 따로저장하는코드가 없는데 jpa의 변경감지 기능을통해서 트랜잭션이 끝날때 기존에 저장됐던값이랑 달라지면 자동으로 update 쿼리를 실행해줍니다.

0

JoonHo Kim

실시간 답변 갑사드립니다.ㅎㅎ

회원가입시 refreshToken의 최초 생성시점은 어디서 찾을 수 있을까요?

registerMember를 찾아보면
OauthLoginService의 oauthLogin 메서드에서
refreshToken을 저장하는 부분을 찾을 수 없네요..

oauthMember = memberService.registerMember(oauthMember);

1

구파고

OauthLoginService를 보시면 처음 회원가입일 때 회원 가입을 진행 후 토큰을 생성한다음에 해당 회원의 refresh token을 갱신해주는 메소드를 보실 수 있습니다. oauthMember = memberService.registerMember(oauthMember); 바로 아래에 있는 코드입니다!


// 토큰 생성 jwtTokenDto = tokenManager.createJwtTokenDto(oauthMember.getMemberId(), oauthMember.getRole()); oauthMember.updateRefreshToken(jwtTokenDto);

 

그리고 위에 설명드린것처럼 변경감지기능에의해 트랜잭션이 종료되는 시점에 update쿼리문이 콘솔창에 출력되는것도 확인하실 수 있을겁니다.

 

update

member

set

update_time=?,

modified_by=?,

email=?,

member_name=?,

member_type=?,

password=?,

profile=?,

refresh_token=?,

role=?,

token_expiration_time=?

where

member_id=?

 

0

JoonHo Kim

전달 주신 update 쿼리를 보면
private LocalDateTime tokenExpirationTime; 에는 @Column 생성이 안되어 있으에도 불구하고

set 구문에token_expiration_time=? 이 진행되는 이유가 궁급합니다.
(자꾸 jpa 질문으로 넘어가는것 같네요...)

1

구파고

기본적으로 엔티티 클래스에있는 필드들은 모두 테이블의 특정 컬럼과 매칭되는 필드라고 생각해주시면됩니다.

@Column어노테이션은 해당 필드에대한 추가적인 정보들을 기술하려고 적어둔거라고 보시면됩니다. 예를 들면 컬럼의 길이나 필드에있는 컬럼명과 테이블에있는 컬럼명이 다를때는 name을 통해서 연결해줄 수도 있구요. null허용 여부같은 값들도 적어줄 수 있습니다. 그리고 hibernate ddl-auto 옵션을 validate로 할 때 이런 속성값들이 실제 테이블과 매핑이 맞지 않으면 애플리케이션 실행자체를 실패시킬 수도 있습니다.

OAUTH2 질문

0

97

2

카카오토큰관련

0

82

2

auditing

0

77

1

전역에러처리질문

0

115

2

토큰 발급 관련 문의 드립니다.

0

131

2

이 흐름이 맞을까요??

0

127

2

OpenFeign을 어떤 상황에서 어떻게 사용하는지 감이 안옵니다...

0

220

2

도메인형 패키지 구조 질문

0

242

1

application.yml token 선언 시 오류

0

322

1

토큰발행시 500 INTERNAL_SERVER_ERROR

0

158

1

oauth 회원가입 시 필수 추가 정보는 어떤 식으로 받으시나요?

0

288

2

io.jsonwebtoken.security.WeakKeyException 해결방법

0

387

1

리프레시 토큰 사용 관련 문의 건

0

336

1

Xss 에서 WebConfig 오류 발생됩니다.

0

673

1

applycation.yml 의 readTimeout 이 적용이 안됩니다.

0

697

2

강사님 Swagger에 질문드립니다.

0

294

2

kakao token 발급 시 에러

0

732

2

아직 초반부분인데 질문이있습니다.

0

205

1

socialLoginApiService map 주입

0

291

1

전역 에러 처리 메시지 관리

0

608

2

안드로이드 스튜디오와 협업

0

646

2

String accessToken = authorizationHeader.split(" ")[1];은 accessToken이 맞나요?

0

312

1

SocialLoginApiServiceFactory 생성자 관련 질문입니다.

0

257

1

OAuthAttributes 클래스의 toMemberEntity의 파라미터로 memberType이 들어가야하는 이유가 궁금합니다.

0

445

2