2017-03-17 15 views
0

私は春の起動アプリケーションでエンドポイントにカスタムフィルタを適用しようとしていますが、手動で401に変更しても返信のステータスは変更できません。Springブートカスタムフィルタを実装するREST API

@Component 
public class AuthFilter extends GenericFilterBean { 

@Override 
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
     throws IOException, ServletException { 

    HttpServletRequest request = ((HttpServletRequest) req); 
    HttpServletResponse response = ((HttpServletResponse) res); 

    String URI = request.getRequestURI(); 
    String authHeader = request.getHeader("Authorization"); 

    boolean endPoint = URI.startsWith("/auth/") || URI.startsWith("/resource/") || URI.startsWith("/project/") || URI.startsWith("/skill/"); 

    if(endPoint) { 
     if(authHeader == null || !authHeader.startsWith("Bearer")) { 
      response.setStatus(401); 
     } 
    } 
    chain.doFilter(request, response); 

    } 

} 

何が原因でこの問題が発生する可能性がありますか?

+0

を(authHeader == ...){レスポンス.setStatus(401); 'else {chain.doFilter(request、response);}' –

+0

これはうまくいきました。 – JustinCredible

答えて

0

あなたが例外をスローし、例外を処理するための方法をここでは401

if(endPoint) { 
    if(authHeader == null || !authHeader.startsWith("Bearer")) { 
     throw new ServletException("Invalid token."); // or your own exception to be handled 
    } 
} 

チェック返すようにそれを処理することができます場合は、{ `ポイント(エンドポイント)としますとしてみてください

https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

関連する問題