我爱java系列---微服务中feign拦截器的使用

Posted hujunwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我爱java系列---微服务中feign拦截器的使用相关的知识,希望对你有一定的参考价值。

1.为什么要用feign拦截器?

技术图片

 作用:由于服务整合了oauth2,在被调用时需要传递令牌才能正常调用,feign拦截器的作用就是为了在服务之间传递令牌。

2.feign拦截器怎么用?

(1)创建拦截器(一般定义在全局中)

在changgou_common服务中创建一个com.changgou.interceptor.FeignInterceptor拦截器,并将所有头文件数据再次加入到Feign请求的微服务头文件中,代码如下:

@Component
public class FeignInterceptor implements RequestInterceptor 

    @Override
    public void apply(RequestTemplate requestTemplate) 

        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();

        if (requestAttributes!=null)

            HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
            if (request!=null)
                Enumeration<String> headerNames = request.getHeaderNames();
                if (headerNames!=null)
                    while (headerNames.hasMoreElements())
                        String headerName = headerNames.nextElement();
                        if (headerName.equals("authorization"))
                            String headerValue = request.getHeader(headerName);//Bearer jwt
                            requestTemplate.header(headerName,headerValue);//向下传递令牌
                        
                    
                
            
        
        

2) 更改changgou_order_web启动类,添加拦截器声明

@Bean
public FeignInterceptor feignInterceptor()
    return new FeignInterceptor();

 

以上是关于我爱java系列---微服务中feign拦截器的使用的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloudAlibaba微服务组件Feign

SpringCloudAlibaba微服务组件Feign

我爱java系列之---微服务中SpringSecurity权限控制使用步骤

Spring Cloud Alibaba - 15 微服务之间使用Feign实现参数的透传

为什么我在spring微服务中实现了feign.RequestInterceptor接口,但是没有拦截

Spring Cloud Alibaba全家桶——微服务调用组件Feign