Feign解决服务之间调用传递token
Posted dalianpai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Feign解决服务之间调用传递token相关的知识,希望对你有一定的参考价值。
现在的微服务基本就是SpringSecurity+Oauth2做的授权和认证,假如多个服务直接要通过Fegin来调用,会报错401
a、有做权限处理的服务接口直接调用会造成调用时出现http 401未授权的错误,继而导致最终服务的http 500内部服务器错误
b、解决方式:最方便的就是往请求头里加上token,一起带过去;
Feign有提供一个接口,RequestInterceptor;
只要实现这个接口,简单做一些处理,比如说我们验证请求头的token叫Access-Token
,我们就先取出当前请求的token,然后放到feign请求头上;
public class FeignConfig implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); //添加token requestTemplate.header(HttpHeaders.AUTHORIZATION, request.getHeader(HttpHeaders.AUTHORIZATION)); } } 调用方式 @FeignClient(name = "qtjuaa", configuration = FeignConfig.class) public interface UaaClient { @RequestMapping(value = "/api/test", method= RequestMethod.GET) String test(); }
以上是关于Feign解决服务之间调用传递token的主要内容,如果未能解决你的问题,请参考以下文章
(61)java Spring Cloud+Spring boot+mybatis企业快速开发架构之Feign调用前统一申请Token传递到调用的服务中
springcloudalibaba架构(31):SpringCloud实现用户信息在微服务之间传递(Feign和Dubbo)
Spring Cloud中Feign如何统一设置验证token
Spring Cloud中Feign如何统一设置验证token