쌓고 쌓다

Spring Security 404 에러 대신 401 에러 뜰때 본문

프로그래밍/spring

Spring Security 404 에러 대신 401 에러 뜰때

승민아 2024. 1. 28. 21:31

 

이상하게 컨트롤러에서 처리하지 못할 요청에 대해 404 에러가 안뜨고 401 에러가 뜨는 것이다.

Controller에서 매핑하지 않은 요청에 대해 404 NOT FOUND 에러가 안뜨고

내가 예외 처리한 401 에러가 뜬다..!

 

왜일까?

 

결론은 스프링부트에서 에러 처리시 Forward인지.. Redirect인지.. 어떤 방식으로 /error로 요청을 보낸다.

 

/error 매핑에서 에러를 처리하여 다음과 같이 JSON 또는 HTML로 응답을 내려주는것이다.

 

 

그렇다 현재 /error에 대해서도 Authentication이 적용되기 때문에 인증이 필요하다고 401 에러가 뜨는 것이다.

anyRequest().authenticated()에 "/error"가 걸림

그런데 GET 요청은 모두 permitAll을 해두었지만 이상하게 401 에러가 뜨긴뜬다... 의문!

보니깐 직접 /error에 GET 요청을 보내면 허용되지만. 예외가 터진 과정을 거쳐 이어진 요청은 인증을 거쳐야한다.

 

 

다음과 같이 "/error"에 permitAll 해주자.

 

그러면 이제 정상적으로 매핑하지 않은 요청에 대해 404 에러가 뜬다.

 

 

 

 

 

"/error"의 경로를 바꾸고 싶다면

BasicErrorController에서 에러를 처리하는데

예외 처리시 /error 경로를 바꾸고 싶다면 다음과 같이 application.properties에서 변경하자.

server.error.path=/경로
Comments