测试代码:
@Autowired private UserFeignClient userFeignClient; //负责人信息修改 @ApiOperation(value = "測試接口", notes = "測試接口") @GetMapping("testGetUser/{id}") public ResponseBody testGetUser(HttpServletRequest request) { String header = request.getHeader("Authorization"); ResponseFeignBody<UserPo> myUser = userFeignClient.getMyUser(); UserPo data = myUser.getData(); return ResponseBody.success(data); }
解决方法:主要看加粗地方
@Slf4j
public class UauthFeignConfig implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
// 此种方式是线程安全的
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
// 不为空时取出请求中的header 原封不动的设置到feign请求中
if (null != attributes) {
HttpServletRequest request = attributes.getRequest();
if (null != request) {
// 遍历设置 也可从request取出整个Header 写到RequestTemplate 中
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String values = request.getHeader(name);
requestTemplate.header(name, values);
}
}
}
}
requestTemplate.header("Authorization", "你的token");
}
}
然后再次登录swagger不需要在使用token登录。直接能获取远程服务的接口数据。