假设客户端 - 动态授权标头

时间:2018-03-08 08:12:11

标签: spring authentication netflix-feign spring-cloud-feign

我有一个服务,它使用授权标头获取http请求。 处理请求时,我想使用Feign Client查询其他服务。对其他服务的查询应包含相同的授权标头。

目前,我使用Filter从传入请求中提取授权标头,将标头存储在ThreadLocal中。 在构建Feign Client时,我使用RequestInterceptor从ThreadLocal读取授权头,并将其放入对其他服务的请求中。

这种方法并不理想,因为当我开始使用RxJava或Hystrix之类的东西时,在处理请求时会更改线程,我必须将授权标头ThreadLocal从一个线程移动到另一个线程。

有什么其他方法可以解决这个问题? 我正在考虑的一种方法是为每个请求创建一个新的FeignClient,这样我就不再需要将授权存储在本地的线程中。但这是个好主意吗?

1 个答案:

答案 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