2017-06-19 104 views
0

我試圖爲以下方式配置控制器的彈簧攔截器。首先,我想排除所有以/swagger開頭的請求。我嘗試按以下方式做:僅爲控制器配置彈簧攔截器只有

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

但是,攔截器被解僱了。哪裏出錯?

也許,有一個替代解決方案與@ControllerAdvice。但是我需要獲取請求標題,所以我想這不符合我的需求。

感謝您的幫助!

回答

0

嘗試使用"/swagger*/**""/swagger*"代替"/swagger**"

+0

我試過第二種方法,但它不起作用。第一個也是,我剛剛嘗試過。我用另一種方式解決了我的問題。 –

0

我解決了以下方式問題:

@ControllerAdvice 
public class SomeAdvice { 

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

然後我得到了一個控制器的請求屬性是這樣的:

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

PS還有一個筆記。如果您使用的是Swagger,您將遇到麻煩,因爲Swagger會將此屬性視爲控制器方法參數。要忽略它,你可以使用下面的配置快照:

.ignoredParameterTypes(SomeObject.class);