dev_beomgeun
꾸준하게 차근차근
dev_beomgeun
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • 전공 (0)
      • 운영체제 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 데이터베이스 (0)
      • 네트워크 (0)
    • 개발 공부 (32)
      • 웹 (6)
      • 리눅스 (4)
      • 머신러닝 (1)
      • 스프링 (17)
      • Git (2)
      • AWS (2)
    • 개발 도서, 강의 (3)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식(김영한.. (2)
      • 스프링 부트와 AWS로 혼자 구현하는 웹서비스 (1)
    • 문제 풀이 (118)
      • 백준 알고리즘 (72)
      • 프로그래머스 알고리즘, SQL (38)
      • Hackerrank SQL (8)
    • 프로젝트 기록 (4)
      • 캡스톤 종합설계 (4)
      • 반려하루 프로젝트 (0)
    • 활동 기록 (12)
      • 네이버 부스트캠프 (7)
      • 취준 & 코테 (4)
      • 소프트웨어 마에스트로 13기 (1)
    • 이것저것 (1)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인
  • 방명록

공지사항

인기 글

태그

  • 그래프탐색
  • Baekjoon
  • 반성
  • c++
  • Hackerrank
  • dp
  • BFS
  • 부스트캠프
  • 프로그래머스 SQL
  • 백준 DP
  • 프로그래머스
  • 스프링
  • 네이버 부스트캠프
  • 백준
  • HackerRank mysql
  • AI Tech
  • 일기
  • 기록
  • 서블릿
  • 회고

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dev_beomgeun

꾸준하게 차근차근

[SpringBoot] response.sendRedirect(url)가 동작하지 않는 경우
개발 공부/스프링

[SpringBoot] response.sendRedirect(url)가 동작하지 않는 경우

2022. 7. 9. 18:56
728x90

현재 상황

- 인증, 인가 관련 예외 처리를 진행하던 중, AuthenticationEntryPoint에서 응답을 주기 위해서 redirect를 하고 있었다.

- 흐름은 AuthenticationEntryPoint -> sendRedirect("/exception/**")

-> ExceptionController에서 throw new CustomException -> ControllerAdvice에서 해당 exception에 대한 예외 처리

- 그러나 해당 response가 Controller까지 도달하지 못하고 계속 요청이 동작하지 않는다.

- 프로젝트에는 스프링 시큐리티가 적용되어 있다.

 

문제

Could not get response

Error: Exceeded maxRedirects. Probably stuck in a redirect loop 

 

- 목적지에 도착하지 못하고 계속 loop이 돌다가 너무 많은 redirection이 생성.

- 따라서 sendRedirect가 왜 동작하지 않는지 원인 분석을 했다.

 

디버깅

- 해당 AuthenticationEntryPoint에 breakPoint를 찍어 두고, 디버깅을 했는데 해당 url의 요청을 받는 Controller까지 요청이 가지 못하는 것을 확인했다.

- 필터에서는 sendRedirect가 동작하지 않는지 등에 대해 검색을 했다.

 

https://stackoverflow.com/questions/10917242/redirection-from-servlet-filter-does-not-work

 

Redirection from Servlet/Filter does not work

I have a problem with redirection - it simply does not work for valid paths. Right now I use page forwarding in the Servlet, but I need redirection in a filter. All the pages reside in the 'pages'

stackoverflow.com

해당 stackoverflow의 답변이 정답은 아니었지만, /*을 보고 한 가지가 스쳤다.

controller가 요청을 받지 못하고, 해당 url까지 전달되지 않는다면 설마 스프링 시큐리티?

 

따라서 설마 하는 마음으로 바로 스프링 시큐리티에 해당 url을 permitAll을 해주었다.

 

.antMatchers(HttpMethod.GET, "/exception/**").permitAll()

 

이후에 다시 요청을 보냈더니, 정상적으로 url에 요청이 전달되었다.

 

결론

- sendRedirect(url)의 get 요청이 스프링 시큐리티 필터에 걸려서 동작하지 않았던 것이다.

- 시큐리티를 사용하는데 동작하지 않는 경우 한번 살펴보자

728x90
저작자표시 비영리 변경금지 (새창열림)

'개발 공부 > 스프링' 카테고리의 다른 글

[SpringBoot x JPA] Soft Delete #1 Select (해당 Status 조건 추가 조회 방법) - @Where  (1) 2022.09.11
[SpringBoot x JPA] List 초기화에서 Builder 패턴 사용 시 NullPointerException  (0) 2022.08.08
[SpringBoot] Custom Exception 에러 처리 및 리팩토링 (Custom Exception)  (0) 2022.06.27
[SpringBoot] Error - Parameter 0 of constructor in ~ required a bean of type 'java.lang.String' that could not be found.  (3) 2022.06.26
[SpringBoot] Error - java.net.SocketTimeoutException at PlainSocketImpl  (0) 2022.03.12
    '개발 공부/스프링' 카테고리의 다른 글
    • [SpringBoot x JPA] Soft Delete #1 Select (해당 Status 조건 추가 조회 방법) - @Where
    • [SpringBoot x JPA] List 초기화에서 Builder 패턴 사용 시 NullPointerException
    • [SpringBoot] Custom Exception 에러 처리 및 리팩토링 (Custom Exception)
    • [SpringBoot] Error - Parameter 0 of constructor in ~ required a bean of type 'java.lang.String' that could not be found.
    dev_beomgeun
    dev_beomgeun
    백엔드 개발을 하며 얻은 지식과 경험을 공유합니다. 현재 카카오페이에서 백엔드 엔지니어로 일하고 있습니다.

    티스토리툴바