feat: API 토큰 관리 시스템 구현 (액세스/리프레시 토큰 분리)
- AuthService: 토큰 발급/갱신 통합 관리 - RefreshController: POST /api/v1/refresh 엔드포인트 추가 - 액세스 토큰 2시간, 리프레시 토큰 7일 (.env 설정) - TOKEN_EXPIRED 에러 코드로 프론트엔드 자동 리프레시 지원 - 리프레시 토큰 일회성 사용 (보안 강화) - Swagger 문서 Auth 태그로 통합
This commit is contained in:
@@ -80,9 +80,24 @@ public function render($request, Throwable $exception)
|
||||
|
||||
// 401 Unauthorized
|
||||
if ($exception instanceof AuthenticationException) {
|
||||
// 토큰 만료 여부 확인
|
||||
$errorCode = null;
|
||||
$message = '인증 실패';
|
||||
|
||||
// Bearer 토큰이 있는 경우 만료 여부 확인
|
||||
$bearerToken = $request->bearerToken();
|
||||
if ($bearerToken) {
|
||||
$token = \Laravel\Sanctum\PersonalAccessToken::findToken($bearerToken);
|
||||
if ($token && $token->expires_at && $token->expires_at->isPast()) {
|
||||
$errorCode = 'TOKEN_EXPIRED';
|
||||
$message = __('error.token_expired');
|
||||
}
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '인증 실패',
|
||||
'message' => $message,
|
||||
'error_code' => $errorCode,
|
||||
'data' => null,
|
||||
], 401);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user