개발 관련 기록과 정리/Spring Boot
Redirect와 Forward의 사용법(Spring Boot 2.X)
롱기누스
2019. 10. 1. 13:57
Redirect를 사용 할때 아무 생각없이 사용 할때가 있다.
그러다가 의문이 든것이 redirect:/url 와 response.response.sendRedirect("/url")의 차이점이다.
결론은 전처리 후처리를 해주는 인터셉터에서 재처리를 하느냐 안하는가의 차이가 있었다.
redirect:/url 의 경우, 인터셉터를 다시 요청해서 전후처리를 할 수 있다.
하지만 response.sendRedirect("/url") 의 경우 인터셉터를 다시 요청하지 않는다는 것이다.
만약에 인터셉터에서 권한 인증이 필요하면 절대로 response.response.sendRedirect("/url")를 사용하면 안될 것이다.
Forward도 마찬가지이다.
request.getRequestDispatcher("/url").forward(request, response) 의 경우 인터셉터 다시 요청 하지 않는다.
권한 인증이 필요하면 forward:/url 를 사용해야 한다.
결론은 인터셉터를 무조건 필요하다면 절대로 response.response.sendRedirect("/url") 와 request.getRequestDispatcher("/url").forward(request, response) 는 사용하지 말아야 한다.