熟老妇BBw视频value);}}returnmap;}}源码目次如下图:​​​
发布日期:2022-09-23 06:06    点击次数:181
天堂的张望全集完整版熟老妇BBw视频

​​

今天这篇著作先容一下JWT令牌如安在微奇迹链路中保证信息不丢失?官方称为令牌中继。

什么是令牌中继?

令牌中继泛泛的讲则是让令牌在微奇迹链路调用中传递下去,保证各个微奇迹大要取得令牌中的用户信息。

以下订单的例子来说,如下图:

​​

下单经由

客户端捎带令牌肯求网关,网关鉴权见效后会将令牌中的用户信息融会出来放在肯求头中下发给订单奇迹,相同的,订单奇迹需要将用户信息传递给账户奇迹取得该用户的账户信息。

那么问题来了?何如保证网关奇迹->订单奇迹->账户奇迹这条链路中的用户信息传递下去是个痛点

处置决议

令牌在openFeign调用过程中是不可自动中继的,因此必须手动的将令牌信息传递下去。

顾惜:openFeign在开启熔断左迁后里面调用开启了子线程,因此传统的决议平直在RequestInterceptor中建造是不可行的。

那么何如保证子线程也能取得肯求头中的用户信息呢?

谜底是:RequestContextHolder这个神器。

RequestContextHolder里面通过InheritableThreadLocal达成子线程分享信息。

在FeignCircuitBreakerInvocationHandler这个类中亦然有如下一滑代码:

酵素 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">RequestContextHolder.setRequestAttributes(requestAttributes); 

恰是使用RequestContextHolder将request的信息保存在其中,中文无码伊人av网因此达成令牌中继只需要读取RequestContextHolder的信息即可。

紧密代码如下:

/**  * @author 公众号:码猿时期专栏  * 用于达成令牌信息中继  */ @Component public class FeignRequestInterceptor implements RequestInterceptor {     @Override     public void apply(RequestTemplate template) {         //从RequestContextHolder中取得HttpServletRequest         HttpServletRequest httpServletRequest = RequestContextUtils.getRequest();         //取得RequestContextHolder中的信息         Map<String, String> headers = getHeaders(httpServletRequest);         //放入feign的RequestTemplate中         for (Map.Entry<String, String> entry : headers.entrySet()) {             template.header(entry.getKey(), entry.getValue());         }     }      /**      * 取得原肯求头      */     private Map<String, String> getHeaders(HttpServletRequest request) {         Map<String, String> map = new LinkedHashMap<>();         Enumeration<String> enumeration = request.getHeaderNames();         if (enumeration != null) {             while (enumeration.hasMoreElements()) {                 String key = enumeration.nextElement();                 String value = request.getHeader(key);                 map.put(key, value);             }         }         return map;     } } 

源码目次如下图:

​​