Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
과제TODO
구현사항
로그인 시 RefreshToken도 같이 발급
멤버가입 반환 DTO에 Refresh Token 추가
sukbum/spring/src/main/java/org/sopt/spring/member/service/dto/UserJoinResponse.java
Lines 3 to 16 in f3e6f53
AccessToken 만료시간 줄임, RefreshToken 발급 로직 추가
sukbum/spring/src/main/java/org/sopt/spring/common/jwt/JwtTokenProvider.java
Lines 20 to 32 in f3e6f53
Redis 설정파일 추가
sukbum/spring/src/main/java/org/sopt/spring/common/auth/redis/config/RedisConfig.java
Lines 11 to 32 in f3e6f53
Redis에 RefreshToken 저장을 위한 Token 도메인 추가
sukbum/spring/src/main/java/org/sopt/spring/common/auth/redis/domain/Token.java
Lines 10 to 31 in f3e6f53
CrudRepository 상속받아서 Redis용 레포지토리 구현
sukbum/spring/src/main/java/org/sopt/spring/common/auth/redis/repository/RedisTokenRepository.java
Lines 8 to 11 in f3e6f53
AccessToken줄 때 RefreshToken Redis에 저장하고 같이 반환
sukbum/spring/src/main/java/org/sopt/spring/member/service/MemberService.java
Lines 31 to 49 in f3e6f53
RefreshToken으로 AccessToken 재발급
재발급 컨트롤러 구현
sukbum/spring/src/main/java/org/sopt/spring/member/controller/MemberController.java
Lines 42 to 52 in f3e6f53
재발급 서비스 구현
sukbum/spring/src/main/java/org/sopt/spring/member/service/MemberService.java
Lines 77 to 96 in f3e6f53
질문하고 싶은거!!
Refresh 토큰 또한 JWT 토큰이기 때문에 Access 토큰과 동일하게 JWT 검증 필터를 거치게 했습니다.
때문에 별도의 Refresh 토큰 검증 없이 (어차피 필터에서 다 해주니깐) PricipalHandler를 통해 memberId만 똑 떼와서 Redis에 해당 키값으로 Refresh 토큰이 있는지 (만료 시간 지나면 없을테니깐) 확인만 해주었는데 괜찮은 방법일까요?
Redis는 동일 키값에 대해서 또 저장하면 덮어씌운다길래 기존 Refresh 토큰을 지우는 로직은 뺐는데 확실하게 해주기 위해 지우는 로직도 추가해야 할까요?
Refresh 토큰을 통해 Access 토큰만 계속 재발급해주면 Access 토큰보다 만료시간이 짧아질 수 있다고 생각해서 항상 Refreh 토큰도 새로 만들었는데 괜찮은 방식일까요?
SecurityConfig에서 /refresh 엔드포인트를 화이트리스트에 넣어줘도 계속 JWT 필터를 거치던데 정말 왜그런지 모르겠습니다..
sukbum/spring/src/main/java/org/sopt/spring/common/auth/SecurityConfig.java
Lines 24 to 45 in f3e6f53