→ redis의 key-value 형태를 반대로 하여 중복 문제를 해결
기존 액세스토큰 재발급 Service 로직에 대해서
- 다중 로그인이 허용되지 않기에, uuid에 대한 리프레쉬토큰이 redis에 만료되지 않고 정상적으로 존재할 경우
새로운 액세스토큰을 생성하여 반환하는 로직
But
key와 value의 형태가 바뀜으로 인해 로직 과정이 변경
- 요청 dto를 통해 리프레쉬 토큰 값 추출
- 리프레쉬토큰 값을 통해 redis에서 uuid 추출
- uuid가 존재하지 않을 경우에 대한 예외처리
- 요청 받은 dto의 uuid 값과 redis에서 리프레쉬토큰 값을 통해 조회한 uuid 값이 다를 경우 예외처리
- 만료 시간 설정하여 액세스토큰 설정
issue
- 리프레쉬토큰에 대한 key와 uuid에 대한 value가 redis에 정상적으로 저장되어 있는데
// 2. Redis에서 요청받은 refreshToken에 대한 uuid 추출
String uuid = (String) redisTemplate.opsForValue().get(refreshTokenValue);
log.info("Redis에서 조회된 uuid: {}", uuid);
- 위 코드에 대해서 uuid가 null로 조회되는 현상 발생
- GenericJackson2JsonRedisSerializer와 같은 직렬화기를 사용하면, 객체가 JSON 문자열로 변환
→ 이 경우, 문자열 값이 JSON 형식으로 표현되며, JSON 규격에 따라 문자열은 항상 큰따옴표로 감싸져야 함