Feign 微服务之间调用认证拦截器
Feign 微服务之间调用认证拦截器
配置request中的header,往微服务传递请求。(简单实现token的传递等)
@compone//注入IOC
public class FeignClientInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if(requestAttributes!=null){
HttpServletRequest request = requestAttributes.getRequest();
//取出当前请求的header,找到jwt令牌
Enumeration headerNames = request.getHeaderNames();
if(headerNames!=null){
while (headerNames.hasMoreElements()){
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
// 将header向下传递
requestTemplate.header(headerName,headerValue);
}
}
}
}
}
或者调用方启动类注入bean
@Bean
public FeignClientInterceptor getFeignClientInterceptor(){
return new FeignClientInterceptor();
}