我有一个服务,它使用授权标头获取http请求。 处理请求时,我想使用Feign Client查询其他服务。对其他服务的查询应包含相同的授权标头。
目前,我使用Filter从传入请求中提取授权标头,将标头存储在ThreadLocal中。 在构建Feign Client时,我使用RequestInterceptor从ThreadLocal读取授权头,并将其放入对其他服务的请求中。
这种方法并不理想,因为当我开始使用RxJava或Hystrix之类的东西时,在处理请求时会更改线程,我必须将授权标头ThreadLocal从一个线程移动到另一个线程。
有什么其他方法可以解决这个问题? 我正在考虑的一种方法是为每个请求创建一个新的FeignClient,这样我就不再需要将授权存储在本地的线程中。但这是个好主意吗?
答案 0 :(得分:1)
我想我找到了解决问题的方法。使用 html, body{
margin: 0;
padding: 0;
width: 100%;
}
.container{
display: block;
margin-top: 8%;
margin-left: 87%;
width: 8%;
}
.div1, .div2 {
display: inline-block;
margin-top: 5%;
background: rgb(212, 229, 245);
height: 100%;
padding: 7px;
width: 199%;
text-align: center;
margin-left: -53%;
border-radius: 10px;
border: 1px solid #c4dbf1;
font-size: 150%;
font-weight: bold;
letter-spacing: -1px;
font: normal medium verdana,arial,helvetica,sans-serif;
}
.div1 a, .div2 a{
font-weight: bold;
text-decoration: none;
}
我可以获得对原始请求的引用(也来自衍生的子线程)并从那里复制标题:
RequestContextHolder