feign远程调用没有权限问题分析与解决
feign远程调用没有权限问题分析与解决#问题描述#原因分析Feign在进行远程调用时, 默认是没有将请求头继续往下传递的, 而在调用接入认证的微服务时, 必须携带JWT令牌才可以访问, 没有携带令牌就访问, 就会出现401 , 未认证 错误 。#解决方案使用Feign的拦截器来解决, 拦截所有的feign的远程调用, 在进行远程调用时, 拦截住请求, 并让请求头Authorization 继续往
·
feign远程调用没有权限问题分析与解决
#问题描述
#原因分析
Feign在进行远程调用时, 默认是没有将请求头继续往下传递的, 而在调用接入认证的微服务时, 必须携带JWT令牌才可以访问, 没有携带令牌就访问, 就会出现401 , 未认证 错误 。
#解决方案
使用Feign的拦截器来解决, 拦截所有的feign的远程调用, 在进行远程调用时, 拦截住请求, 并让请求头Authorization 继续往下传递 。
#示例代码
@Component
public class FeignInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if(requestAttributes != null){
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String authorization = request.getHeader("Authorization");
template.header("Authorization", authorization);
}
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)