1
我試圖使用spring-cloud-sleuth來跟蹤由spring-security-oauth發起的https請求。如何使用spring-cloud-sleuth跟蹤spring-security-oauth活動?
但我堅持認爲spring-security-oauth過濾器OAuth2AuthenticationProcessingFilter在spring-cloud-sleuth過濾器TraceFilter之前執行。
這是否可以更改,以便在spring-security-oauth過濾器之前處理spring-cloud-sleuth過濾器?
版本信息:
- 春天開機:1.3.5
- 彈簧雲:Brixton.SR3
- 彈簧雲偵探:1.0.3
- 彈簧安全的oauth2 :2.0.9
更新:根據下面我可以解決在p建議 通過定義自己FilterRegistrationBean爲roblem:
@Inject
TraceFilter traceFilter;
@Bean
public FilterRegistrationBean myTraceFilter() {
LOG.info("Register a TraceFilter with HIGHEST_PRECEDENCE");
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(traceFilter, new ServletRegistrationBean[0]);
filterRegistrationBean.setDispatcherTypes(ASYNC, new DispatcherType[]{ERROR, FORWARD, INCLUDE, REQUEST});
filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return filterRegistrationBean;
}
感謝您的快速響應! 你的意思是使用FilterRegistrationBean,如: @Bean 公共FilterRegistrationBean getSleuthTraceFilterRegistrationBean(){ FilterRegistrationBean豆=新FilterRegistrationBean(); bean.setFilter(new TraceFilter(...)); bean.setOrder(1); bean.addUrlPatterns(「/」); return bean; } 但我怎麼創建TraceFilter,它的構造需要大量的,我不知道該怎樣在:-) 填寫線索,或者有我錯過了一些其他註冊TraceFilter簡單的方法的詳細信息? –
對不起,評論混亂!你的意思是使用'FilterRegistrationBean'?但是如何創建'TraceFilter'對象?它的構造函數需要很多細節......還是有更簡單的方法來註冊TraceFilter? –
在這裏,您有2個負責註冊的bean - https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/ springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java#L98我不確定它是否能夠正常工作,但是顯然可以重用bean並嘗試以相同的方式以更高的順序註冊它。 'TraceFilter'已經是一個bean - 你可以注入它。 –