
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.takensoft.common.util;
import com.takensoft.common.config.CommonConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
/**
* @author : takensoft
* @since : 2024.04.05
*
* 인증 에러
* AuthenticationEntryPoint 커스텀하여 인증이 실패한 경우에 대한 처리
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint {
private final CommonConfig commonConfig;
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
// 사용자의 요청이 인증되지 않았을 때 로그 출력
log.info("Unauthorized user request: {}", authException.getMessage());
// 요청자의 IP 주소 로그 출력
log.info("Requester IP: {}", request.getRemoteAddr());
// 요청 URI 로그 출력
log.info("Request URI: {}", request.getRequestURI());
// 접근 거부 에러 응답을 위한 객체 생성
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setMessage("Token expired"); // 에러 응답 메시지 설정
// errorResponse.setMessage("인증에러 발생: " + authException.getMessage()); // 에러 응답 메시지 설정
errorResponse.setPath(request.getRequestURI()); // 요청 경로 설정
errorResponse.setError(HttpStatus.UNAUTHORIZED.getReasonPhrase()); // 오류 원인 설정
errorResponse.setStatus(HttpStatus.UNAUTHORIZED.value()); // 상태 코드 설정
errorResponse.setTimestamp(LocalDateTime.now()); // 응답 시간 설정
// 응답 헤더 설정 및 json 응답 전송
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setStatus(HttpStatus.UNAUTHORIZED.value());
response.getOutputStream().write(commonConfig.getObjectMapper().writeValueAsBytes(errorResponse));
}
}