业务场景
服务A 获取到Token值后,要传递给 服务B进行校验 。
在微服务架构下如何实现呢?
实现
自定义拦截器
artisan-feign-api 子模块 增加 拦截器
import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /** * @author 小工匠 * @version 1.0 * @description: TODO * @date 2022/2/4 0:52 * @mark: show me the code , change the world */ public class ArtisanRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); requestTemplate.header("token", request.getHeader("token")); } }
然后实例化
暴漏接口
因为是从header中获取参数 ,所以
@RequestHeader("token") String token
服务实现
服务提供者 artisan-cloud-feign-product
服务调用者
artisan-cloud-feign-order 写个测试接口,测测吧
验证
观察下OORDER的日志
源码
https://github.com/yangshangwei/SpringCloudAlibabMaster