2016-08-23 210 views
2

是否有可能獲得響應狀態代碼,告訴應用程序是否應該使用帶有preHandle方法的HTTP 404進行響應Spring MVC攔截器。獲取響應狀態代碼告訴請求是否應該在Spring MVC攔截器preHandle方法內用HTTP 404進行響應

因爲下面的代碼將導致每一個無效的請求到登錄頁面重定向:

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.