RedisTemplate<Object, Object>에 대하여 Service계층에서 바로 선언하여 사용
→ redis는 jpa에서 받은 데이터를 json 형식으로 저장이 필요하다하여 RedisConfig 생성 필요
build.gradle
# build.gradle
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
spring:
cache:
type: redis
redis:
host: localhost
port: 6379
RedisConfig
RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory)
redisTemplate는 Spring Framework에서 Redis와 상호작용하기 위해 제공
Redis 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행할 수 있는 다양한 메서드를 제공
직렬화/역직렬화
template.setKeySerializer(new StringRedisSerializer()); // Redis의 키를 문자열로 직렬화, Redis는 바이트 배열을 사용하므로, 키를 문자열로 저장하고 싶을 때 StringRedisSerializer를 사용
template.setValueSerializer(new StringRedisSerializer()); // Redis의 값도 문자열로 직렬화
template.setHashKeySerializer(new StringRedisSerializer()); // Redis의 해시에서 키를 문자열로 직렬화
template.setHashValueSerializer(new StringRedisSerializer()); // Redis의 해시에서 값도 문자열로 직렬화
RefreshRedisToken
@RedisHash(value = "token", timeToLive = 60 * 60 * 24)
@Id
<Security Info>
public String generateAccessToken(Authentication authentication) // 게이트웨이에서 토큰을 뜯어 loginId, providerId를 사용할 일이 없다면 여기서 다른 식별할 값 입력 가능(String name)
← 프론트와 협의 필요, uuid를 토큰 발급시에 넣을 필요가 있을지? (범규 재훈 상언) → 없음 → 제거.claim("username", authentication.getName()) // 사용자 이름 -> 토큰 탈취 시 사용자 이름을 알 수 있음
← 타당한 이유가 존재하지 않는다면 삭제하거나 다른 값을 넣어도 가능generateAccessToken(Authentication authentication)
→ 파라미터 제거generateRefreshToken(Authentication authentication)
→ 파라미터 제거