Skip to content

Commit d6919b3

Browse files
committed
feat : Redis의존성 추가 및 리프레시 토큰 엔티티, 레포지터리 생성
1 parent 6f0bd32 commit d6919b3

File tree

4 files changed

+66
-1
lines changed

4 files changed

+66
-1
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ dependencies {
3131
implementation("io.github.cdimascio:java-dotenv:5.2.2")
3232
implementation("org.springframework.boot:spring-boot-starter-security")
3333
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
34+
implementation("org.springframework.boot:spring-boot-starter-data-redis")
3435
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0")
3536
implementation("io.jsonwebtoken:jjwt-api:0.12.3")
3637
runtimeOnly("io.jsonwebtoken:jjwt-impl:0.12.3")
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.back.domain.auth.refreshToken.entity;
2+
3+
import lombok.*;
4+
import org.springframework.data.annotation.Id;
5+
import org.springframework.data.redis.core.RedisHash;
6+
import org.springframework.data.redis.core.TimeToLive;
7+
import org.springframework.data.redis.core.index.Indexed;
8+
9+
import java.time.LocalDateTime;
10+
11+
@RedisHash("refresh_token")
12+
@Getter
13+
@Setter
14+
@NoArgsConstructor
15+
@AllArgsConstructor
16+
@Builder
17+
public class RefreshToken {
18+
19+
@Id
20+
private String token;
21+
22+
@Indexed
23+
private Long userId;
24+
25+
private String email;
26+
27+
private LocalDateTime createdAt;
28+
29+
@TimeToLive
30+
private Long ttl; // seconds
31+
32+
public static RefreshToken create(String token, Long userId, String email, long ttlSeconds) {
33+
return RefreshToken.builder()
34+
.token(token)
35+
.userId(userId)
36+
.email(email)
37+
.createdAt(LocalDateTime.now())
38+
.ttl(ttlSeconds)
39+
.build();
40+
}
41+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.back.domain.auth.refreshToken.repository;
2+
3+
import com.back.domain.auth.refreshToken.entity.RefreshToken;
4+
import org.springframework.data.repository.CrudRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface RefreshTokenRepository extends CrudRepository<RefreshToken, String> {
9+
}

src/main/resources/application.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,22 @@ server:
5353
enabled: true
5454
force: true
5555

56+
data:
57+
redis:
58+
host: ${REDIS_HOST:localhost}
59+
port: ${REDIS_PORT:6379}
60+
password: ${REDIS_PASSWORD:}
61+
timeout: 2000ms
62+
lettuce:
63+
pool:
64+
max-active: 8
65+
max-idle: 8
66+
min-idle: 0
67+
5668
custom:
5769
jwt:
5870
secretKey: ${JWT_SECRET_KEY}
5971
accessToken:
60-
expirationSeconds: "#{60*20}"
72+
expirationSeconds: "#{60*15}"
73+
refreshToken:
74+
expirationSeconds: "#{60*60*24*30}"

0 commit comments

Comments
 (0)