• SpringCloud 中如何使微服务只能被指定的程序调用


    我们在做微服务时,有时候需要将微服务做一些限制,比如只能我们自己的服务调用,不能通过浏览器直接调用等。

    具体的逻辑如下:

    我们就可以使用spring cloud sleuth,在应用调用微服务时通过Tracer产生一个traceId,并通过request设置到header里面,

    然后sleuth会将该traceId在整个链路传递,我们在微服务中定义一个拦截器,取到header里面的traceId并和链路中的traceId比较,

    如果相等,则表明是我们自己的应用调用,拦截器通过,否则这次请求被拦截

    代码详见github 

    https://github.com/devinzhang0209/interview_springcloud.git

    一. 应用调用微服务,产生traceId

    1. feign调用微服务,指定配置

     

    2. FeignReqeustConfig中实例化拦截器用于生成traceId

     

    3. 拦截器生成traceId并放到header里面

     

     二 . 拦截器拦截到traceId并和链路中比较

      1. 拦截器判断traceId

      

      

     2. 拦截器生效,只拦截微服务的请求(定义时定义微服务都是cloud开头)

       

  • 相关阅读:
    NOIP 模拟 序列操作
    LUOGU 1525 关押罪犯
    HDU2473 Junk-Mail Filter
    BZOJ 2096 Pilots
    luogu 3939 数颜色
    NOIP模拟 赌博游戏
    Unity3D
    HTML5
    Cocos2d-x——支持多触点
    Cocos2d-x——Cocos2d-x 屏幕适配总结
  • 原文地址:https://www.cnblogs.com/DevinZhang1990/p/13169960.html
Copyright © 2020-2023  润新知