Copy
@Getter
@Setter
public class RefreshToken implements Serializable {
private static final long serialVersionUID = 6494678977089006639L;
private String refreshToken;
private String email;
public RefreshToken(String token, String email) {
this.refreshToken = token;
this.email = email;
}
public RefreshToken updateToken(String token) {
this.refreshToken = token;
return this;
}
}
출처 : 소영님
Copy
@Getter
@NoArgsConstructor
public class TokenDto {
private String accessToken;
private String refreshToken;
public TokenDto(String accessToken, String refreshToken) {
this.accessToken = accessToken;
this.refreshToken = refreshToken;
}
}
Copy
// 기능 : Redis에 Refresh Token 저장
@Repository
@RequiredArgsConstructor
public class RefreshTokenRepository {
private final RedisTemplate<String, String> redisTemplate;
private long expiredTime = 3 * 60L;// 리프레시토큰 유효시간 : 3분
// 특정 RefreshToken 조회
public RefreshToken findByEmail(String email){
RefreshToken refreshToken = new RefreshToken(redisTemplate.opsForValue().get(email), email);
return refreshToken;
}
// RefreshToken 저장
public RefreshToken saveRefreshToken(RefreshToken refreshToken){
redisTemplate.opsForValue().set(refreshToken.getEmail(), refreshToken.getRefreshToken(),expiredTime,TimeUnit.SECONDS);// 리프레시 토큰 유효시간 설정 : 3분 이부분 추후에 수정 필요 !
return refreshToken;
}
// RefreshToken 삭제
public void deleteRefreshToken(String email){
redisTemplate.delete(email);
}
}
1. findByEmail()
2. saveRefreshToken()
3. deleteRefreshToken