티스토리 뷰
package com.lunastratos.mudspoon.Service
import com.lunastratos.mudspoon.Entity.RefreshTokenEntity
import com.lunastratos.mudspoon.Repository.RefreshTokenRepository
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.data.redis.core.StringRedisTemplate
import org.springframework.stereotype.Service
import java.time.Duration
@Service
class RedisService @Autowired constructor(
private val refeshRepo: RefreshTokenRepository,
private val stringRedisTemplate: StringRedisTemplate
){
@Value("\${mudSpoon.refresh_token_time_s}")
private lateinit var refeshTokenValidTime :String
fun save(accessToken:String, refreshToken :String){
val refreshTokenValue = RefreshTokenEntity(refreshToken, refreshToken)
refeshRepo.save(refreshTokenValue)
}
fun getData(key: String?): String? {
val valueOperations = stringRedisTemplate!!.opsForValue()
return valueOperations[key!!]
}
fun setData(key: String, value: String) {
val valueOperations = stringRedisTemplate!!.opsForValue()
valueOperations[key] = value
}
fun setDataExpire(key: String, value: String, duration: Long) {
val valueOperations = stringRedisTemplate!!.opsForValue()
val expireDuration: Duration = Duration.ofSeconds(duration)
valueOperations.set(key, value, expireDuration)
}
//시간 지정됨
fun setDataExpired(key: String, value: String) {
val valueOperations = stringRedisTemplate!!.opsForValue()
val expireDuration: Duration = Duration.ofSeconds(refeshTokenValidTime.toLong())
valueOperations.set(key, value, expireDuration)
}
fun deleteData(key: String) {
stringRedisTemplate!!.delete(key)
}
}
다음과 같은 방식으로 RedisService를 만들어서 사용중이다. 테스트삼아
@Test
fun redisConnectionTest() {
val expireDuration: Duration = Duration.ofSeconds(10)
redisService.setDataExpire("test1", "111", 10)
}
로 10초동안 살리고 그 다음은 자동으로 없어지는 것을 테스트 해봤다.
10초후에 없어진다. 이를 통해서 토큰의 살아있는 시간을 설정 가능하다.
'사이드 프로젝트 > Beyrouth.Plan' 카테고리의 다른 글
DreamChildren - 전국아동급식정보 지도 (0) | 2022.01.09 |
---|---|
자바 스프링 정리 (0) | 2022.01.06 |
리액트 - 대세는 리코일 (0) | 2021.12.30 |
Spring Security 이론, 그리고 느낌 (0) | 2021.12.12 |
JWT와 AccessToken 그리고 RefreshToken 전략까지 (0) | 2021.12.12 |