Merge pull request 'fix(auth): 로그아웃 시 프록시 캐시 쿠키 삭제 수정' (#28) from develop into main
All checks were successful
Build and Deploy API / build-and-deploy (push) Successful in 18s

Reviewed-on: #28
This commit is contained in:
htlee 2026-02-19 15:26:14 +09:00
커밋 f96e082ae2
3개의 변경된 파일34개의 추가작업 그리고 7개의 파일을 삭제

파일 보기

@ -44,7 +44,21 @@
- `@Builder` 허용 - `@Builder` 허용
- `@Data` 사용 금지 (명시적으로 필요한 어노테이션만) - `@Data` 사용 금지 (명시적으로 필요한 어노테이션만)
- `@AllArgsConstructor` 단독 사용 금지 (`@Builder`와 함께 사용) - `@AllArgsConstructor` 단독 사용 금지 (`@Builder`와 함께 사용)
- `@Slf4j` 로거 사용
## 로깅
- `@Slf4j` (Lombok) 로거 사용
- SLF4J `{}` 플레이스홀더에 printf 포맷 사용 금지 (`{:.1f}`, `{:d}`, `{%s}` 등)
- 숫자 포맷이 필요하면 `String.format()`으로 변환 후 전달
```java
// 잘못됨
log.info("처리율: {:.1f}%", rate);
// 올바름
log.info("처리율: {}%", String.format("%.1f", rate));
```
- 예외 로깅 시 예외 객체는 마지막 인자로 전달 (플레이스홀더 불필요)
```java
log.error("처리 실패: {}", id, exception);
```
## 예외 처리 ## 예외 처리
- 비즈니스 예외는 커스텀 Exception 클래스 정의 - 비즈니스 예외는 커스텀 Exception 클래스 정의

파일 보기

@ -20,13 +20,14 @@ fi
# Conventional Commits 정규식 # Conventional Commits 정규식
# type(scope): subject # type(scope): subject
# - type: feat|fix|docs|style|refactor|test|chore|ci|perf (필수) # - type: feat|fix|docs|style|refactor|test|chore|ci|perf (필수)
# - scope: 영문, 숫자, 한글, 점, 밑줄, 하이픈 허용 (선택) # - scope: 괄호 제외 모든 문자 허용 — 한/영/숫자/특수문자 (선택)
# - subject: 1~72자, 한/영 혼용 허용 (필수) # - subject: 1자 이상 (길이는 바이트 기반 별도 검증)
PATTERN='^(feat|fix|docs|style|refactor|test|chore|ci|perf)(\([a-zA-Z0-9가-힣._-]+\))?: .{1,72}$' PATTERN='^(feat|fix|docs|style|refactor|test|chore|ci|perf)(\([^)]+\))?: .+$'
MAX_SUBJECT_BYTES=200 # UTF-8 한글(3byte) 허용: 72문자 ≈ 최대 216byte
FIRST_LINE=$(head -1 "$COMMIT_MSG_FILE") FIRST_LINE=$(head -1 "$COMMIT_MSG_FILE")
if ! [[ "$FIRST_LINE" =~ $PATTERN ]]; then if ! echo "$FIRST_LINE" | grep -qE "$PATTERN"; then
echo "" echo ""
echo "╔══════════════════════════════════════════════════════════════╗" echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ 커밋 메시지가 Conventional Commits 형식에 맞지 않습니다 ║" echo "║ 커밋 메시지가 Conventional Commits 형식에 맞지 않습니다 ║"
@ -58,3 +59,13 @@ if ! [[ "$FIRST_LINE" =~ $PATTERN ]]; then
echo "" echo ""
exit 1 exit 1
fi fi
# 길이 검증 (바이트 기반 — UTF-8 한글 허용)
MSG_LEN=$(echo -n "$FIRST_LINE" | wc -c | tr -d ' ')
if [ "$MSG_LEN" -gt "$MAX_SUBJECT_BYTES" ]; then
echo ""
echo " ✗ 커밋 메시지가 너무 깁니다 (${MSG_LEN}바이트, 최대 ${MAX_SUBJECT_BYTES})"
echo " 현재 메시지: $FIRST_LINE"
echo ""
exit 1
fi

파일 보기

@ -227,9 +227,11 @@ public class AuthController {
private void clearSessionCookies(HttpServletResponse response) { private void clearSessionCookies(HttpServletResponse response) {
response.addHeader(HttpHeaders.SET_COOKIE, response.addHeader(HttpHeaders.SET_COOKIE,
ResponseCookie.from("GC_SESSION", "").path("/").maxAge(0).build().toString()); ResponseCookie.from("GC_SESSION", "")
.path("/").httpOnly(true).secure(true).sameSite("Lax").maxAge(0).build().toString());
response.addHeader(HttpHeaders.SET_COOKIE, response.addHeader(HttpHeaders.SET_COOKIE,
ResponseCookie.from("gc_proxy_auth", "").path("/").maxAge(0).build().toString()); ResponseCookie.from("gc_proxy_auth", "")
.path("/").httpOnly(true).secure(true).sameSite("Lax").maxAge(0).build().toString());
} }
private String getCookieValue(HttpServletRequest request, String name) { private String getCookieValue(HttpServletRequest request, String name) {