트러블슈팅
Cannot call sendRedirect() after the response has been committed 해결 방법
기억용블로그
2022. 5. 19. 23:05
728x90
protected void resultRedirectStrategy(final HttpServletRequest request,
final HttpServletResponse response,
final Authentication authentication) throws IOException, ServletException {
SavedRequest savedRequest = (SavedRequest) request.getSession().getAttribute("SPRING_SECURITY_SAVED_REQUEST");
if (authentication.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN"))) {
redirectStrategy.sendRedirect(request, response, "/admin");
}
if (savedRequest != null) {
String targetUrl = savedRequest.getRedirectUrl();
System.out.println("targetUrl: " + targetUrl);
redirectStrategy.sendRedirect(request, response, targetUrl);
} else {
System.out.println("defaultUrl: " + defaultUrl);
redirectStrategy.sendRedirect(request, response, defaultUrl);
}
}
위와같이 if statement가 else로 연결되어 있지 않은 경우에 1가지 이상의 redirectStrategy가 결정되기 때문에 해당 에러가 발생한다.
...
redirectStrategy.sendRedirect(request, response, "/admin");
}
else if (savedRequest != null) {
String targetUrl = savedRequest.getRedirectUrl();
...
이와 같이 if-else if-else if-else의 형태로 만들어 어떠한 경우라도 redirect 전략이 한 개가 될 수 있게 해야한다