Skip to content

Commit d4faa73

Browse files
authored
Merge pull request #146 from Journey-Together/feat/#145
[Feat/#145] fix: social/JWT 기반 refreshToken 수정
2 parents e5a80c3 + 29294ae commit d4faa73

File tree

4 files changed

+25
-22
lines changed

4 files changed

+25
-22
lines changed

src/main/java/Journey/Together/domain/member/entity/Member.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,11 @@ public class Member extends BaseTimeEntity {
7676
@Column(name = "refreshToken", columnDefinition = "varchar(255)")
7777
private String refreshToken;
7878

79+
@Column(name = "social_refreshToken", columnDefinition = "varchar(255)")
80+
private String socialRefreshToken;
81+
7982
@Builder
80-
public Member(String email, String name,String nickname, String phone, String profileUuid, LoginType loginType,String bloodType,MemberType memberType, String birth, String allergy, String medication,String part1Rel,String part1Phone,String part2Rel,String part2Phone, String refreshToken) {
83+
public Member(String email, String name,String nickname, String phone, String profileUuid, LoginType loginType,String bloodType,MemberType memberType, String birth, String allergy, String medication,String part1Rel,String part1Phone,String part2Rel,String part2Phone, String refreshToken, String socialRefreshToken) {
8184
this.email = email;
8285
this.name = name;
8386
this.nickname=nickname;
@@ -93,6 +96,7 @@ public Member(String email, String name,String nickname, String phone, String pr
9396
this.part1Phone=part1Phone;
9497
this.part2Rel=part2Rel;
9598
this.part2Phone=part2Phone;
96-
this.refreshToken=refreshToken;
99+
this.refreshToken = refreshToken;
100+
this.socialRefreshToken=socialRefreshToken;
97101
}
98102
}

src/main/java/Journey/Together/domain/member/service/AuthService.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@
1111
import Journey.Together.global.common.CustomMultipartFile;
1212
import Journey.Together.global.exception.ApplicationException;
1313
import Journey.Together.global.exception.ErrorCode;
14-
import Journey.Together.global.exception.ErrorResponse;
15-
import Journey.Together.global.security.kakao.KakaoClient;
16-
import Journey.Together.global.security.kakao.dto.KakaoProfile;
1714
import Journey.Together.global.security.jwt.TokenProvider;
1815
import Journey.Together.global.security.jwt.dto.TokenDto;
16+
import Journey.Together.global.security.kakao.KakaoClient;
17+
import Journey.Together.global.security.kakao.dto.KakaoProfile;
1918
import Journey.Together.global.security.kakao.dto.KakaoToken;
2019
import Journey.Together.global.security.naver.dto.NaverDeleteResponse;
2120
import Journey.Together.global.security.naver.dto.NaverProperties;
@@ -26,14 +25,11 @@
2625
import org.springframework.http.*;
2726
import org.springframework.stereotype.Service;
2827
import org.springframework.transaction.annotation.Transactional;
29-
import org.springframework.util.LinkedMultiValueMap;
3028
import org.springframework.util.MultiValueMap;
3129
import org.springframework.web.client.RestTemplate;
3230
import org.springframework.web.multipart.MultipartFile;
3331

3432
import javax.imageio.ImageIO;
35-
import org.slf4j.Logger;
36-
import org.slf4j.LoggerFactory;
3733
import java.awt.image.BufferedImage;
3834
import java.io.ByteArrayOutputStream;
3935
import java.io.IOException;
@@ -90,7 +86,8 @@ public LoginRes signIn(String token, String type, LoginReq loginReq) throws IOEx
9086
interestRepository.save(interest);
9187
}
9288
tokenDto = tokenProvider.createToken(member);
93-
member.setRefreshToken(loginReq.refreshToken());
89+
member.setRefreshToken(tokenDto.refreshToken());
90+
member.setSocialRefreshToken(loginReq.refreshToken());
9491

9592
// Response
9693
return LoginRes.of(member, tokenDto);
@@ -126,7 +123,8 @@ public LoginRes signIn(String token, String type, LoginReq loginReq) throws IOEx
126123
}
127124

128125
tokenDto = tokenProvider.createToken(member);
129-
member.setRefreshToken(loginReq.refreshToken());
126+
member.setRefreshToken(tokenDto.refreshToken());
127+
member.setSocialRefreshToken(loginReq.refreshToken());
130128
}
131129
return LoginRes.of(member, tokenDto);
132130
}
@@ -138,6 +136,7 @@ public void signOut(String token, Member member) {
138136

139137
// Business Logic - Refresh Token 삭제 및 Access Token 블랙리스트 등록
140138
tokenProvider.getExpiration(accessToken);
139+
member.setSocialRefreshToken(null);
141140
member.setRefreshToken(null);
142141

143142
// Response
@@ -149,7 +148,7 @@ public void withdrawal(Member member) {
149148

150149
// Business Logic - 회원 논리적 삭제 진행
151150
if(member.getLoginType().equals(LoginType.NAVER)) {
152-
NaverTokenResponse tokenResponse = toRequestToken(member.getRefreshToken());
151+
NaverTokenResponse tokenResponse = toRequestToken(member.getSocialRefreshToken());
153152
if(tokenResponse.getError() != null){
154153
throw new ApplicationException(ErrorCode.NAVER_REFRESH_ERROR);
155154
}
@@ -159,7 +158,8 @@ public void withdrawal(Member member) {
159158
}
160159
}else if(member.getLoginType().equals(LoginType.KAKAO)) {
161160
//accessToken 요청
162-
KakaoToken kakaoToken = kakaoClient.getKakaoAccessToken(member.getRefreshToken());
161+
KakaoToken kakaoToken = kakaoClient.getKakaoAccessToken(member.getSocialRefreshToken());
162+
System.out.println(kakaoToken.access_token());
163163
//연결 삭제
164164
Long id = kakaoClient.unlinkUser(kakaoToken.access_token());
165165
if(id==null){
@@ -169,8 +169,6 @@ public void withdrawal(Member member) {
169169

170170
memberRepository.delete(member);
171171

172-
// Response
173-
174172
}
175173
@Transactional
176174
public TokenDto reissue(String token, Member member) {

src/main/java/Journey/Together/global/security/kakao/KakaoClient.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ public KakaoToken getKakaoAccessToken(String refresh_token) {
5353
params.add("grant_type", "refresh_token");
5454
params.add("client_id", kakaoClientId);
5555
params.add("refresh_token", refresh_token);
56-
params.add("client_secret", kakaoClientSecret);
56+
// params.add("client_secret", kakaoClientSecret);
5757

5858
// 요청 보내기 및 응답 수신
5959
String response = webClient.post()
6060
.uri(kakaoTokenUri)
61-
.header("Content-type", "application/x-www-form-urlencoded")
61+
.header("Content-type", "application/x-www-form-urlencoded;charset=utf-8")
6262
.body(BodyInserters.fromFormData(params))
6363
.retrieve() // 데이터 받는 방식, 스프링에서는 exchange는 메모리 누수 가능성 때문에 retrieve 권장
6464
.bodyToMono(String.class) // (Mono는 단일 데이터, Flux는 복수 데이터)
@@ -76,14 +76,14 @@ public KakaoToken getKakaoAccessToken(String refresh_token) {
7676
return kakaoToken;
7777
}
7878

79-
public KakaoProfile getMemberInfo(String accesToken) {
79+
public KakaoProfile getMemberInfo(String accessToken) {
8080
// 요청 기본 객체 생성
8181
WebClient webClient = WebClient.create(kakaoUserInfoUri);
8282
// 요청 보내서 응답 받기
8383
String response = webClient.post()
8484
.uri(kakaoUserInfoUri)
8585
.header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8")
86-
.header("Authorization", accesToken)
86+
.header("Authorization", accessToken)
8787
.retrieve()
8888
.bodyToMono(String.class)
8989
.block();

src/main/java/Journey/Together/global/security/kakao/dto/KakaoToken.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
@Builder
66
public record KakaoToken(
7-
String access_token,
8-
String refresh_token,
97
String token_type,
8+
String access_token,
9+
String id_token,
1010
Integer expires_in,
11-
Integer refresh_token_expires_in,
12-
String scope
11+
String refresh_token,
12+
Integer refresh_token_expires_in
13+
1314
) {
1415
}

0 commit comments

Comments
 (0)