通常我们调用的接口都是有权限控制的,很多时候可能认证是通过参数区去传递的,还有就是通过请求头去传递认证信息,比如Basic认证方式。在Feign中我们可以直接配置Basic认证。
@Configuration
public class FeignConfiguration{
public BasicAuthRequestInterceptor basicAuthRequestInterceptor(){
return new BasicAuthRequestInterceptor("user","password");
}
}
自定义认证方式其实就是自定义一个请求拦截器,在请求之前做认证操作,然后往请求头中设置认证之后的信息。通过实现RequestInterceptor接口来自定义认证方式。
import feign.RequestInterceptor;
import feign.RequestTemplate;
public class FeignBasicAuthRequestInterceptor implements RequestInterceptor {
public FeignBasicAuthRequestInterceptor(){}
@Override
public void apply(RequestTemplate requestTemplate) {
//业务逻辑
}
}
然后将配置改成我们自定义的就可以了,这样当Feign去请求接口的时候,每次请求之前都会进入FeignBasicAuthRequestInterceptor的apply方法中,在里面就可以做属于你的逻辑了。
import feign.Request;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignConfiguration {
/**
* 接口调用Basic认证配置
* 具体认证规则需要在FeignbASicAuthRequestInterceptor方法中定义
* @return
*/
@Bean
public FeignBasicAuthRequestInterceptor basicAuthRequestInterceptor(){
return new FeignBasicAuthRequestInterceptor();
}
}