Skip to content

Commit 57acba8

Browse files
authored
Merge pull request #26 from prgrms-web-devcourse-final-project/feature/login
토큰 재발급 시 발생하는 오류 수정
2 parents 05df3f2 + ee832dc commit 57acba8

File tree

5 files changed

+25
-15
lines changed

5 files changed

+25
-15
lines changed

src/main/java/com/example/log4u/common/oauth2/controller/OAuth2Controller.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import org.springframework.web.bind.annotation.RequestMapping;
77
import org.springframework.web.bind.annotation.RestController;
88

9+
import com.example.log4u.common.constants.TokenConstants;
910
import com.example.log4u.common.oauth2.jwt.JwtUtil;
10-
import com.example.log4u.common.oauth2.repository.RefreshTokenRepository;
1111
import com.example.log4u.common.oauth2.service.RefreshTokenService;
1212

1313
import io.jsonwebtoken.ExpiredJwtException;
@@ -23,7 +23,6 @@ public class OAuth2Controller {
2323

2424
private final JwtUtil jwtUtil;
2525
private final RefreshTokenService refreshTokenService;
26-
private final RefreshTokenRepository refreshTokenRepository;
2726

2827
@GetMapping("/token/reissue")
2928
public ResponseEntity<?> reissue(
@@ -35,10 +34,10 @@ public ResponseEntity<?> reissue(
3534
String access = null;
3635
Cookie[] cookies = request.getCookies();
3736
for (Cookie cookie : cookies) {
38-
if (cookie.getName().equals("refresh")) {
37+
if (cookie.getName().equals(TokenConstants.REFRESH_TOKEN)) {
3938
refresh = cookie.getValue();
4039
}
41-
if (cookie.getName().equals("access")) {
40+
if (cookie.getName().equals(TokenConstants.ACCESS_TOKEN)) {
4241
access = cookie.getValue();
4342
}
4443
}
@@ -57,7 +56,7 @@ public ResponseEntity<?> reissue(
5756

5857
// 토큰이 refresh인지 확인 (발급시 페이로드에 명시)
5958
String category = jwtUtil.getTokenType(refresh);
60-
if (!category.equals("refresh")) {
59+
if (!category.equals(TokenConstants.REFRESH_TOKEN)) {
6160
return new ResponseEntity<>("잘못된 토큰입니다.", HttpStatus.BAD_REQUEST);
6261
}
6362

@@ -67,21 +66,20 @@ public ResponseEntity<?> reissue(
6766

6867
private void createNewTokens(HttpServletResponse response, String access, String refresh) {
6968
// 기존 리프레시 토큰 삭제
70-
refreshTokenRepository.deleteByRefresh(refresh);
69+
refreshTokenService.deleteRefreshToken(refresh);
7170

7271
Long userId = jwtUtil.getUserId(access);
7372
String role = jwtUtil.getRole(access);
7473
String name = jwtUtil.getName(access);
7574

76-
String newAccessToken = jwtUtil.createJwt("access", userId, name, role, 600000L);
77-
String newRefreshToken = jwtUtil.createJwt("refresh", userId, name, role, 600000L);
75+
String newAccessToken = jwtUtil.createJwt(TokenConstants.ACCESS_TOKEN, userId, name, role, 600000L);
76+
String newRefreshToken = jwtUtil.createJwt(TokenConstants.REFRESH_TOKEN, userId, name, role, 600000L);
7877

79-
response.addCookie(createCookie("refresh", newRefreshToken));
80-
response.addCookie(createCookie("access", newAccessToken));
78+
response.addCookie(createCookie(TokenConstants.REFRESH_TOKEN, newRefreshToken));
79+
response.addCookie(createCookie(TokenConstants.ACCESS_TOKEN, newAccessToken));
8180

8281
// 새 리프레시 토큰 저장
8382
refreshTokenService.saveRefreshToken(
84-
userId,
8583
name,
8684
refresh
8785
);

src/main/java/com/example/log4u/common/oauth2/entity/RefreshToken.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class RefreshToken {
2222
@Setter
2323
private String name;
2424

25-
@Column(nullable = false)
25+
@Column(nullable = false, unique = true)
2626
@Setter
2727
private String refresh;
2828

src/main/java/com/example/log4u/common/oauth2/handler/OAuth2AuthenticationSuccessHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private void setCookieAndSaveRefreshToken(
7676
String refresh = jwtUtil.createJwt(REFRESH_TOKEN_KEY, userId, name, role, refreshTokenValidityInSeconds);
7777

7878
// 리프레시 토큰 DB 저장
79-
refreshTokenService.saveRefreshToken(null, name, refresh);
79+
refreshTokenService.saveRefreshToken(name, refresh);
8080

8181
response.addCookie(createCookie(ACCESS_TOKEN_KEY, access));
8282
response.addCookie(createCookie(REFRESH_TOKEN_KEY, refresh));

src/main/java/com/example/log4u/common/oauth2/service/RefreshTokenService.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.example.log4u.common.oauth2.entity.RefreshToken;
99
import com.example.log4u.common.oauth2.repository.RefreshTokenRepository;
1010

11+
import jakarta.transaction.Transactional;
1112
import lombok.RequiredArgsConstructor;
1213

1314
@Service
@@ -19,15 +20,20 @@ public class RefreshTokenService {
1920
@Value("${jwt.refresh-token-expire-time-seconds}")
2021
private long refreshTokenValidityInSeconds;
2122

22-
public void saveRefreshToken(Long userId, String name, String refresh) {
23+
public void saveRefreshToken(String name, String refresh) {
2324
Date date = new Date(System.currentTimeMillis() + refreshTokenValidityInSeconds);
2425

2526
RefreshToken refreshToken = new RefreshToken(
26-
userId,
27+
null,
2728
name,
2829
refresh,
2930
date.toString()
3031
);
3132
refreshTokenRepository.save(refreshToken);
3233
}
34+
35+
@Transactional
36+
public void deleteRefreshToken(String refresh) {
37+
refreshTokenRepository.deleteByRefresh(refresh);
38+
}
3339
}

src/main/resources/application-dev.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ spring:
99
hibernate:
1010
ddl-auto: create
1111

12+
13+
properties:
14+
hibernate:
15+
format_sql: true
16+
show_sql: true
17+
1218
datasource:
1319
url: jdbc:mysql://localhost:3307/log4u
1420
username: dev

0 commit comments

Comments
 (0)