主线程里创建子线程调用feign接口,通过header消息头带token信息方式,在子线程header里获取不到Authorization信息,以至于子线程用户校验出现问题。以下代码块放到feignconfig文件里可以解决子线程继承主线程的header信息以避免该问题。
@Autowired
RequestContextFilter requestContextFilter;
@Autowired
DispatcherServlet dispatcherServlet;
@PostConstruct
public void init() {
// 设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险。
requestContextFilter.setThreadContextInheritable(true);
dispatcherServlet.setThreadContextInheritable(true);
}