2016-08-23 6 views
2

応答ステータスコードを取得することは、リクエストがHTTP 404で返され、 Spring MVCインターセプタ。応答ステータスコードを取得すると、リクエストがHTTP MVCインターセプタpreHandleメソッド内でHTTP 404で応答する必要があるかどうかが示されます。

次のコードは、サインインページにすべての無効な要求をリダイレクトする結果となるので:「一時302 HTTP」:

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リクエストをリダイレクトします。ただし、 "/ signin"パス(または元のリクエストパス)を管理するコントローラが存在しない場合、HTTP 404が生成される可能性があります。

関連する問題