使用Spring Cloud + Spring Security Oauth2.0 + JWT 做分布式认证的时候,内部微服务调用的时候出现权限问题
这种情况为没有认证就请求了资源服务器的资源,解决办法为使用Feign的时候把请求的认证信息传递过去,或者资源服务那边开放一些接口。不过开放接口的话情况有点多,所以就选择把token携带过去了。feign提供了一个名为RequestInterceptor得拦截器,可以在请求的时候指定请求头
@Configuration
public class FeignConfig implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
requestTemplate.header("Authorization", request.getHeader("Authorization"));
}
}
除了这个方法以外,网上有改依赖和yml配置的方法,Spring Cloud项目中通过Feign进行内部服务调用发生401\407错误无返回信息的问题,这个我始终没调成功,还需要研究下-_- ||