feat: API 토큰 관리 시스템 구현 (액세스/리프레시 토큰 분리)

- AuthService: 토큰 발급/갱신 통합 관리
- RefreshController: POST /api/v1/refresh 엔드포인트 추가
- 액세스 토큰 2시간, 리프레시 토큰 7일 (.env 설정)
- TOKEN_EXPIRED 에러 코드로 프론트엔드 자동 리프레시 지원
- 리프레시 토큰 일회성 사용 (보안 강화)
- Swagger 문서 Auth 태그로 통합
This commit is contained in:
2025-11-10 11:17:32 +09:00
parent 657623fef5
commit 798d5149ea
13 changed files with 639 additions and 12 deletions

View File

@@ -14,6 +14,10 @@
'unauthenticated' => '인증에 실패했습니다.', // 401
'forbidden' => '요청에 대한 권한이 없습니다.', // 403
'bad_request' => '잘못된 요청입니다.', // 400 (검증 외 일반 케이스)
'token_expired' => '토큰이 만료되었습니다', // 401 (토큰 만료)
'refresh_token_required' => '리프레시 토큰이 필요합니다', // 422
'refresh_token_invalid' => '리프레시 토큰 형식이 올바르지 않습니다', // 422
'refresh_token_invalid_or_expired' => '리프레시 토큰이 유효하지 않거나 만료되었습니다', // 401
// 검증/파라미터
'validation_failed' => '요청 데이터 검증에 실패했습니다.', // 422

View File

@@ -24,6 +24,7 @@
'logout_success' => '로그아웃 되었습니다.',
'signup_success' => '회원가입이 완료되었습니다.',
'registered' => '회원가입 처리',
'token_refreshed' => '토큰이 갱신되었습니다',
// 테넌트/컨텍스트
'tenant_switched' => '활성 테넌트가 전환되었습니다.',