<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      feign之間傳遞oauth2-token的問題和解決

      在微服務架構里,服務與服務之間的調用一般用feign就可以實現,它是一種可視化的rpc,并且集成了ribbon的負載均衡能力,所以很受歡迎。

      授權服務

      在授權服務里,用戶通過用戶名密碼,或者手機和驗證碼等方式登陸之后,在http頭里會有授權的標識,在客戶端調用時,需要添加當時有效的token才可以正常訪問被授權的頁面。

      Content-Type:application/json
      Authorization:Bearer d79c064c-8675-4047-a119-fac692e447e8
      

      而在業務層里,服務與服務之間使用feign來實現調用,而授權的代碼我們可以通過攔截器實現,在feign請求之前,把當前服務的token添加到目標服務的請求頭就可以了,一般是這樣實現的。

      /**
       * 發送FeignClient設置Header信息.
       * http://www.itmuch.com/spring-cloud-sum/hystrix-threadlocal/
       * Hystrix傳播ThreadLocal對象
       */
      @Component
      public class TokenFeignClientInterceptor implements RequestInterceptor {
      
        /**
         * token放在請求頭.
         *
         * @param requestTemplate 請求參數
         */
        @Override
        public void apply(RequestTemplate requestTemplate) {
          RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes();
          if (requestAttributes != null) {
            HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
            String token = request.getHeader(TokenContext.KEY_OAUTH2_TOKEN);
            requestTemplate.header(TokenContext.KEY_OAUTH2_TOKEN,
                new String[] {token});
          }
        }
      }
      
      

      上面的攔截器代碼沒有什么問題,也很好理解,但事實上,當你的feign開啟了hystrix功能,如果開啟了,需要把hystrix的策略進行修改,默認是THREAD的,這個級別時ThreadLocal是空的,所以你的授權不能傳給feign的攔截器.

      hystrix.command.default.execution.isolation.strategy: SEMAPHORE 
      

      資源項目里獲取當前用戶

      在另一個項目,需要其它獲取當前用戶,需要使用下面的代碼。

      • 先配置一個授權的地址
      security:
        oauth2:
          resource:
            id: user
            user-info-uri: http://${auth.host:localhost}:${auth.port:8002}/user # 這里是授權服務的地址,即auth-service
            prefer-token-info: false
      
      auth:
        host: localhost  #這個不可以用eureka里的服務名,只能使用docker-compose里的服務名
        port: 8002
      
      
      • 下面的代碼用來獲取當前用戶
       Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
          String user = objectMapper.writeValueAsString(authentication.getPrincipal());
      

      本講主要對feign的請求頭傳遞信息進行講解,開發時遇到的坑總節了一下,分享給大家!

      posted @ 2019-07-03 18:29  張占嶺  閱讀(10237)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产日韩一区二区三区在线观看| 人妻无码av中文系列久| 伊人久久大香线蕉综合网| 亚洲精品不卡av在线播放| 成人欧美日韩一区二区三区| 欧美牲交videossexeso欧美| 九九热精品视频在线免费| 国产亚洲精品AA片在线播放天| 亚洲欧美日韩在线码| 最新中文字幕av无码专区不| 啦啦啦高清在线观看视频www| 国产一区二区三区我不卡| 中国极品少妇xxxxx| 日韩成人一区二区二十六区| 国产精品入口中文字幕| 性男女做视频观看网站| 国产精品自拍中文字幕| 1区2区3区4区产品不卡码网站 | 亚洲熟女乱色综合亚洲图片| 无码抽搐高潮喷水流白浆| 国产对白老熟女正在播放| 四虎永久地址WWW成人久久| 国产久爱免费精品视频| 亚洲情综合五月天| 久久精品午夜视频| 欧美日产国产精品| 久久夜色国产噜噜亚洲av| 亚洲国产一区二区三区久| 国产福利视频区一区二区| 日韩人妻中文字幕精品| 免费无码高潮流白浆视频| 美女一区二区三区在线观看视频 | 99中文字幕国产精品| 在线观看亚洲欧美日本| 久久精品A一国产成人免费网站| 丰满无码人妻热妇无码区| 老熟女重囗味hdxx69| 国产91精品调教在线播放| 精品人妻中文字幕有码在线| 中文字幕人妻无码一区二区三区| 亚洲国产天堂久久综合网|