问题描述
在 micronaut 中,我有一个用例,我需要将 oauth2 访问令牌作为自定义标头(而不是 Header Name='Authorization)添加到每个请求中。
目前,我正在获取令牌并向 https://micronaut-projects.github.io/micronaut-security/latest/guide/#clientecredentialshttpclient 指定的每个请求添加授权标头。但我还必须向每个传出请求添加另一个标头,其值为令牌。所以,我使用 HttpClientFilter 来拦截请求,然后读取授权标头,然后添加这个值为令牌的自定义标头。但这会导致并发问题。有时 ClientCredentialsHttpClientFilter 在 HttpClientFilter 之后被调用,在这种情况下,我得到 null 作为令牌。
那么,有没有办法确保在 HttpClientFilter 之前调用 ClientCredentialsHttpClientFilter?
编辑:
当我通过 IDE 运行时,所有这些都可以正常工作。但是当我使用 native-image 时不会运行。
解决方法
过滤器实现了 Ordered
接口。
只需覆盖 getOrder()
方法并根据您所需的顺序设置值。