토큰 생명주기 관리를 위해 Redis TTL(Time To Live) 기능을 사용하는 방향으로 수정해 보았다.

TTL기능을 사용하기 위해선 CrudRepository를 상속받아야 한다. 그래서 수정된 코드는 아래와 같다!

 

1. RefreshToken (entity)


  
// 기능 : Redis에 Refresh Token 저장
@Getter
@Setter
@NoArgsConstructor
@RedisHash(value = "refreshToken", timeToLive = 7 * 24 * 60 * 60L ) // 초단위 = 7일
public class RefreshToken {
@Id
private String email;
private String refreshToken;
public RefreshToken(String email, String token) {
this.refreshToken = token;
this.email = email;
}
public RefreshToken updateToken(String token) {
this.refreshToken = token;
return this;
}
}

 

2. RefreshTokenRepository


  
@Repository
public interface RefreshTokenRepository extends CrudRepository<RefreshToken, String> {
void deleteById(String email);
}

 

3. RefreshTokenRepository


  
// 기능 : Redis에 Refresh Token 저장
@Service
@RequiredArgsConstructor
public class RefreshTokenService {
private final RefreshTokenRepository refreshTokenRepository;
// 특정 RefreshToken 조회
public RefreshToken findByEmail(String email){
return refreshTokenRepository.findById(email).orElseGet(
()-> null
);
}
// RefreshToken 저장
public void saveRefreshToken(RefreshToken refreshToken){
RefreshToken refreshToken1 = new RefreshToken(refreshToken.getEmail(), refreshToken.getRefreshToken());
refreshTokenRepository.save(refreshToken1);
}
// RefreshToken 삭제
public void deleteRefreshToken(String email){
refreshTokenRepository.deleteById(email);
}
}

 

 

전체 코드는 아래 깃헙을 참고해 주세요 : ) ! 

https://github.com/namoldak/Backend

 

GitHub - namoldak/Backend

Contribute to namoldak/Backend development by creating an account on GitHub.

github.com

 

+ Recent posts