Skip to content

Commit cc4e8e1

Browse files
committed
fix[member]:소셜 로그인으로 진행했을 때 토큰으로 member_id를 조회하는 로직에 대한 버그 수정
1 parent 9faad87 commit cc4e8e1

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

backend/src/main/java/com/ai/lawyer/global/jwt/CookieUtil.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,18 @@ public class CookieUtil {
2626

2727
// 쿠키 보안 설정 상수
2828
private static final boolean HTTP_ONLY = true;
29-
private static final boolean SECURE_IN_PRODUCTION = false; // 개발환경에서는 false (HTTP), 운영환경에서는 true로 변경 (HTTPS)
3029
private static final String COOKIE_PATH = "/";
31-
private static final String SAME_SITE = "Lax"; // Lax: 같은 사이트 요청에서 쿠키 전송 허용
3230
private static final int COOKIE_EXPIRE_IMMEDIATELY = 0;
3331

3432
@Value("${custom.cookie.domain:}")
3533
private String cookieDomain;
3634

35+
@Value("${custom.cookie.secure:false}")
36+
private boolean cookieSecure;
37+
38+
@Value("${custom.cookie.same-site:Lax}")
39+
private String cookieSameSite;
40+
3741
public void setTokenCookies(HttpServletResponse response, String accessToken, String refreshToken) {
3842
setAccessTokenCookie(response, accessToken);
3943
setRefreshTokenCookie(response, refreshToken);
@@ -58,26 +62,26 @@ public void clearTokenCookies(HttpServletResponse response) {
5862
* ResponseCookie를 생성합니다 (SameSite 지원).
5963
*/
6064
private ResponseCookie createResponseCookie(String name, String value, int maxAge) {
61-
log.debug("=== 쿠키 생성 중: name={}, cookieDomain='{}', isEmpty={}",
62-
name, cookieDomain, cookieDomain == null || cookieDomain.isEmpty());
65+
log.info("=== 쿠키 생성 중: name={}, domain='{}', secure={}, sameSite={}",
66+
name, cookieDomain, cookieSecure, cookieSameSite);
6367

6468
ResponseCookie.ResponseCookieBuilder builder = ResponseCookie.from(name, value)
6569
.httpOnly(HTTP_ONLY)
66-
.secure(SECURE_IN_PRODUCTION)
70+
.secure(cookieSecure)
6771
.path(COOKIE_PATH)
6872
.maxAge(Duration.ofSeconds(maxAge))
69-
.sameSite(SAME_SITE);
73+
.sameSite(cookieSameSite);
7074

7175
// 도메인이 설정되어 있으면 추가
7276
if (cookieDomain != null && !cookieDomain.isEmpty()) {
73-
log.debug("쿠키 도메인 설정: {}", cookieDomain);
77+
log.info("쿠키 도메인 설정: {}", cookieDomain);
7478
builder.domain(cookieDomain);
7579
} else {
76-
log.debug("쿠키 도메인 설정 안 함 (빈 값 또는 null)");
80+
log.info("쿠키 도메인 설정 안 함 (빈 값 또는 null)");
7781
}
7882

7983
ResponseCookie cookie = builder.build();
80-
log.debug("생성된 쿠키: {}", cookie);
84+
log.info("생성된 쿠키: {}", cookie);
8185
return cookie;
8286
}
8387

backend/src/main/resources/application-dev.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,6 @@ custom:
7171
frontend:
7272
url: ${DEV_FRONTEND_URL}
7373
cookie:
74-
domain: ${DEV_COOKIE_DOMAIN}
74+
domain: ${DEV_COOKIE_DOMAIN:} # 개발환경: 도메인 설정 없음 (localhost)
75+
secure: false # HTTP 환경 (localhost)
76+
same-site: Lax # 개발환경에서는 Lax로 충분

backend/src/main/resources/application-prod.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ custom:
8484
url: ${PROD_FRONTEND_URL}
8585
cookie:
8686
domain: ${PROD_COOKIE_DOMAIN:.trybalaw.com} # 운영환경: 모든 서브도메인에서 쿠키 공유
87+
secure: true # HTTPS 환경에서는 반드시 true
88+
same-site: None # 크로스 도메인 쿠키 전송 허용 (api.trybalaw.com <-> www.trybalaw.com)
8789

8890
sentry:
8991
dsn: ${PROD_SENTRY_DSN}

0 commit comments

Comments
 (0)