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 - 你可以注入它。 –