Как передать параметры в FeignRequestInterceptor? - PullRequest
0 голосов
/ 19 марта 2020

У меня есть этот код

@Component()
public class FeignRequestInterceptor {

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

Есть ли способ передать имя пользователя и пароль в качестве параметра?

У меня есть фильтр, который перехватывает запрос, там я получить некоторые заголовки, и я хочу использовать эти заголовки для установки user и password, поэтому, когда я позже использую клиента feign для другого запроса, у меня есть эти заголовки

1 Ответ

1 голос
/ 24 марта 2020

Ребята, я нашел это решение, не знаю, является ли оно лучшим, но оно сработало.

Я удаляю код сверху и даже фильтр, чтобы он принял запрос, и я использовал это

@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);
    }
}
...