1. RefreshToken (Entity)

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;

    }

}

출처 : 소영님

2. TokenDto

Copy
@Getter

@NoArgsConstructor

public class TokenDto {

    private String accessToken;

    private String refreshToken;

    public TokenDto(String accessToken, String refreshToken) {

        this.accessToken = accessToken;

        this.refreshToken = refreshToken;

    }

}

3. RefreshTokenRepository

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