如何通过Feign实现微服务之间带token访问

问题描述

有做权限处理的服务接口直接调用会造成调用时出现http 401未授权的错误,继而导致最终服务的http 500内部服务器错误。

解决方案

最方便的就是往请求头加上token,一起带过去

具体实现

Feign有提供一个接口,RequestInterceptor;只要实现这个接口,简单做一些处理。比如说我们验证请求头的token叫Access-Token,我们就先取出当前请求的token,然后放到feign请求头上

1.新建一个feign配置类
@Configuration
public class FeignConfig implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
      // 获取当前请求Spring信息
      ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
      // 获取请求体
      HttpServletRequest request = attributes.getRequest();
      // 获取Header、或参数等
      String token = request.getHeader("xxx_token");
      // 注入Feign请求体
      requestTemplate.header( token );
      }
}
2.在@FeignClient接口里添加configuration = {FeignConfig.class}

@FeignClient(name="被调用的服务名", configuration={FeignConfig.class})

你可能感兴趣的:(如何通过Feign实现微服务之间带token访问)