Spring Cloud全解析:服务调用之Feign拦截器

Feign拦截器

通过实现RequestInterceptor接口来实现Feign的拦截器,实现apply方法

public class FeignRequestInterceptor implements RequestInterceptor
{
    @Override
    public void apply(RequestTemplate requestTemplate)
    {
        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();

        if (StringUtils.isNotNull(httpServletRequest))
        {
            Map<String, String> headers = ServletUtils.getHeaders(httpServletRequest);
            // 传递用户信息请求头,防止丢失
            String userId = headers.get("userId");
            if (StringUtils.isNotEmpty(userId))
            {
                requestTemplate.header("userId", userId);
            }
            String userName = headers.get("userName");
            if (StringUtils.isNotEmpty(userName))
            {
                requestTemplate.header("userName", userName);
            }
            String authentication = headers.get("authentication");
            if (StringUtils.isNotEmpty(authentication))
            {
                requestTemplate.header("authentication", authentication);
            }

            // 配置客户端IP
            requestTemplate.header("X-Forwarded-For", IpUtils.getIpAddr(ServletUtils.getRequest()));
        }
    }
}

参考文献

posted @   拾光师  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2023-09-23 shell 字符串操作
点击右上角即可分享
微信分享提示