如何将参数传递给FeignRequestInterceptor?

问题描述 投票:0回答:1

我有此代码

@Component()
public class FeignRequestInterceptor {

    @Bean
    public RequestInterceptor basicAuthRequestInterceptor() {
        return new BasicAuthRequestInterceptor("username", "password");
    }
}

是否可以通过用户名和密码作为参数?

[我有一个拦截请求的过滤器,那里有一些标头,我想使用这些标头来设置userpassword,因此当我稍后使用伪客户端来处理另一个请求时,我那些标题

java spring-boot spring-cloud-feign feign
1个回答
0
投票

伙计们,我找到了这个解决方案,不知道这是否是最好的解决方案,但它确实有效。

我从上面删除了代码,甚至删除了过滤器以接受请求,并且我使用了这个代码

@Configuration
public class FeignRequestInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate template) {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
                .getRequest();
        String token = "Basic " + Base64.getEncoder().encodeToString(
                (request.getParameter("username") + ":" + request.getParameter("password")).getBytes(Charsets.UTF_8));
        template.header("Authorization", token);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.