Zk内部服务请求携带web请求参数

      在微服务框架,内部模块间的通讯走的是zookpeer注册服务,在集成用户认证信息时遇到zk内部协议请求未携带认证token信息导致web请求未认证授权。这里解决方案是配置启动类,在类上使用@Configuration。把web请求的认证信息token在调用zk服务前注入进去。把启动类放入commom公共部分,每个模块引入common依赖,这样实现了在内部通信时携带的认证信息.实例代码如下:

/**

 * Feign获取请求参数.
 */
@Configuration
public class FeignConfig implements RequestInterceptor {


    @Override
    public void apply(RequestTemplate requestTemplate) {
        String token = getHeaders(getHttpServletRequest()).get("token");
        if (StringUtils.isBlank(token)) {
            token = getHttpServletRequest().getParameter("Token");
        }
        requestTemplate.header("Token", token);
    }


    private HttpServletRequest getHttpServletRequest() {
        try {
            return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        } catch (Exception e) {
            return null;
        }
    }


    private Map<String, String> getHeaders(HttpServletRequest request) {
        Map<String, String> map = new LinkedHashMap<String, String>();
        Enumeration<String> enumeration = request.getHeaderNames();
        while (enumeration.hasMoreElements()) {
            String key = enumeration.nextElement();
            String value = request.getHeader(key);
            map.put(key, value);
        }
        return map;
    }


    @Bean
    public feign.Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值