2017-06-19 11 views
0

Ich versuche, einen Spring Interceptor für Controller nur auf folgende Weise zu konfigurieren. Für den Anfang möchte ich alle Anfragen ausschließen, die mit /swagger beginnen. Ich versuche, es auf folgende Weise zu tun:Spring Interceptor nur für Controller konfigurieren

registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/swagger**"); 

Allerdings Interceptor wird gefeuert. Wo ist ein Fehler?

Vielleicht gibt es eine alternative Lösung mit @ControllerAdvice. Aber ich muss Anfrage Header bekommen, also denke ich, dass es nicht meinen Bedürfnissen entspricht.

Danke für jede Hilfe!

Antwort

0

Versuchen zu verwenden "/swagger*/**" oder "/swagger*" statt "/swagger**"

+0

ich den zweiten Ansatz versucht, aber es funktioniert nicht. Der erste auch, ich habe es gerade ausprobiert. Ich habe mein Problem auf andere Weise gelöst. –

0

ich das Problem auf folgende Weise gelöst:

@ControllerAdvice 
public class SomeAdvice { 

    @ModelAttribute 
    public void token(HttpServletRequest request) { 
     // getting headers and setting the attribute in the request 
     request.setAttribute("theAttribute", new SomeObject()); 
    } 
} 

Und dann bekomme ich die Anfrage Attribut in einem Controller auf diese Weise:

public void someMethod(@RequestAttribute("theAttribute") SomeObject someObject) { 
    // some logic goes here 
} 

PS Und noch eine Anmerkung. Wenn Sie Swagger verwenden, kommen Sie in Schwierigkeiten, da Swagger dieses Attribut als Controller-Methodenparameter betrachtet. Zu ignorieren, es können Sie die folgende Momentaufnahme der Konfiguration verwenden:

.ignoredParameterTypes(SomeObject.class); 
Verwandte Themen