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();
}