问题描述
有做权限处理的服务接口直接调用会造成调用时出现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})











网友评论