2016-08-23 2 views
2

Возможно ли получить код состояния ответа, если запрос должен отвечать HTTP 404 с помощью метода preHandle внутри Перехватчик Spring MVC.получить код состояния ответа, сообщает, должен ли запрос отвечать HTTP 404 внутри метода предварительной пересылки Spring MVC Interceptor

Поскольку следующий код приведет к перенаправлению каждых недопустимым запросов на страницу входа:

public class SecurityInterceptor extends HandlerInterceptorAdapter { 
    private static final Log LOG = LogFactory.getLog(SecurityInterceptor.class); 

    @Override 
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
     LOG.info("Interceptor: Pre-handle"); 
     HttpSession session = request.getSession(); 
     String urlPath = request.getRequestURI(); 
     String contextPath = request.getContextPath(); 
     String relativePath = urlPath.replaceFirst(contextPath, ""); 
     if (!relativePath.equals("/signin") && !relativePath.equals("/register")) { 
      if (session == null || session.getAttribute("curUser") == null) { 
       //redirect to signin 
       response.sendRedirect(contextPath + "/signin"); 
       return false; 
      } 
     } 
     return true; 
    } 

} 
+0

Непонятно, что вы хотите. Должен ли 404 отправляться вместо перенаправления? – zeroflagL

+0

Да, это то, чего я хочу. –

ответ

0

Следующий код будет перенаправить запрос HTTP с кодом состояния: «Временные 302 HTTP». Однако, если контроллер, ответственный за путь «/ signin» (или исходный путь запроса), не существует, он может генерировать HTTP 404.

Смежные вопросы