inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기

2.5. ExceptionHandler 만들기

토큰에서 예외 발생시 처리

262

녜리

작성한 질문수 1

0

안녕하세요 강사님, 좋은 강의 잘 듣고 있습니다.

따라하던 중 토큰을 잘못 입력했을 경우 403 Forbidden 에러가 발생하는데 이 에러의 경우는 RestControllerAdvice 에서 처리를 할 수 없는건가요??
이 경우에도 Response형태를 통일 시키고 싶은데 어떻게 하면 될까요..?

kotlin spring-boot jpa spring-security jwt

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

토큰 관련 예외처리를 RestControllerAdvice에서 처리하고자 할 때, Spring Boot에서는 @ControllerAdvice 또는 @RestControllerAdvice를 사용하여 전역적인 예외 처리를 구성할 수 있습니다. 하지만 403 Forbidden 에러 같은 인증 및 인가와 관련된 예외는 Spring Security의 필터 체인에서 발생하기 때문에, 단순히 @RestControllerAdvice로 처리하기 어려울 수 있습니다.

이러한 예외 상황을 처리하려면 Spring Security의 예외 처리 메커니즘을 사용해야 합니다. 특히, Spring Security에 커스텀 엔트리 포인트를 구현하거나 액세스 거부 핸들러를 정의하여 이러한 상황을 처리할 수 있습니다.

예를 들어, JwtAuthenticationEntryPoint 클래스를 구현하여 인증 실패 시 커스텀 응답을 반환하도록 설정할 수 있습니다.

@Component
public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint {

    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
        // 여기에서 custom response를 설정합니다.
        response.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized");
    }
}

또한, WebSecurityConfigurerAdapter에서 이를 등록해주어야 합니다.

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable()
        .exceptionHandling()
        .authenticationEntryPoint(jwtAuthenticationEntryPoint)
        // 나머지 구성
}

이와 같이 설정하면, Spring Security가 처리하는 인증 예외 상황에서도 커스텀 응답을 반환할 수 있습니다.

이러한 내용은 Spring Security project pageSpring Boot Reference Documentation에서 보다 자세히 확인할 수 있습니다.

쿠키 생성 관련

0

7

1

JWT auth error invalid token

0

21

2

테스트 코드 작성 시 DTO 새로 작성하는 이유가 궁금합니다.

0

16

1

leaveGroupChatRoom 문의

0

21

3

변경감지(더티체킹) 이후 플러시할 경우의 쿼리

0

16

1

단일 테이블 시 null 값과 연관관계 필요성 질문

0

32

1

validation 추가하기에 대해 질문

0

121

1

로그인 후 Token 발행 시 postman 에러메시지

0

165

1

unique 작성법

0

165

1

4.1 마지막 회원가입 실행되지만 빈화면 뜸

0

245

3

4.1강 마지막 회원가입 실행

0

163

1

2.4강에서 1:18초쯤에 <T>를하고 뭔가 추가하는 작업

0

187

2

class 와 data class

0

191

1

안녕하세요 선생님 rememberme 질문드립니다..!

0

252

1

Next Lv 강의에 대해서 계획중이신게 있을까요?

0

295

1

테이블 create문

0

193

1

DTO 생성 과정에서 궁금한 점이 있어요!!

0

588

3

2.5강에서 포스트맨 오류와 전에 실습한 내용에 대해 질문 드립니다

0

622

2

TokenProvider의 Key 관련하여 질문이 있습니다.

0

390

1

스프링 시큐리티 예외 RestControllerAdvice로 처리

0

452

1

1 : N 필드 `memberRole` 에 @OneToMany 옵션 cascade 미사용, 컬랙션 null 초기화 에 대한 질문입니다.

0

420

2

loginId는 왜 변경이 안될까요?

0

434

1

memberRole필드 질문이요~

0

513

1

Validation 관련해서 질문드립니다.

1

825

2