2017-03-17 5 views
0

Ich versuche, einen benutzerdefinierten Filter auf meine Endpunkte in einer Spring-Boot-Anwendung anwenden, aber ich kann nicht den Status meiner Antwort ändern, gibt es 200, obwohl ich es manuell zu 401 ändern.Spring Boot REST API Implementierung von benutzerdefinierten Filter

@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); 

    } 

} 

Irgendwelche Vorschläge, was zu diesem Problem führen könnte?

+0

versuchen, mit: 'if (endPoint) {if (authHeader == ...) {response.setStatus (401); } else {chain.doFilter (Anfrage, Antwort);}} else {chain.doFilter (Anfrage, Antwort);} ' –

+0

Ja, das funktioniert, sehr geschätzt! – JustinCredible

Antwort

0

Sie können eine Ausnahme auslösen und behandeln sie die 401.

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

prüfen, wie zurück eine Ausnahme behandeln:

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

Verwandte Themen