1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.Feign接口
@FeignClient(name = "MainClient", url = "${main-client.url}", configuration = TokenFeign.class)
public interface CompanyMainClient {
3.Feign过滤器
import com.organization.global.token.service.TokenService;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.beans.factory.annotation.Autowired;
public class TokenFeign implements RequestInterceptor {
@Autowired
private TokenService tokenService;
@Override
public void apply(RequestTemplate requestTemplate) {
String adminToken = tokenService.getAdminToken();
requestTemplate.query("token",adminToken);
}
}
4.全局Feign过滤器
@Configuration
public class FeignRequestInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes attr = (ServletRequestAttributes) requestAttributes;
HttpServletRequest request = attr.getRequest();
String authz = request.getHeader("Authorization");//网关传过来的 token
template.header("Authorization", authz);
template.header("x-auth-request-user", "99999999");
}
}