2017-03-29 84 views
1

我面臨的問題,當我試圖訪問從zuul預過濾器的另一個REST API(在ZUUL路線註冊),呼叫正在成爲遞歸即它一次又一次地跑我的預過濾器的代碼。我用例是如下 -zuul API網關過濾

  1. 在Zuul PreFilterrun()方法,我在驗證頭傳遞的令牌。

  2. 驗證令牌後,我打電話一個休息服務(用戶位置服務)來獲取用戶詳細信息。我的用戶位置服務本身在ZUUL註冊如下:

    user-location-service: 
        path: /userLocationService/** 
        url: http://localhost:9002 
    

的問題是JWT令牌驗證碼被一次又一次地運行,能否請您提出一些解決方案,我可以申請電話用戶位置服務,以便PreFilter代碼不會一次又一次運行?

+0

你能告訴我爲什麼你使用預過濾器進行驗證。你使用OAuth 2.0嗎? – wthamira

+0

否Thamira ...我們僅在前置過濾器中驗證JWT令牌。 –

+0

http://www.baeldung.com/spring-security-oauth-jwt – wthamira

回答

1

你的用戶位置服務是Zuul registred。所以,當你在無限循環中受到懲罰的時候,你的過濾器一直會被執行。

這裏有兩種方法:

  • 不要再傳遞到網關和呼叫直接用戶位置服務
  • OR,創建你的ZUll身份驗證篩選過濾規則不考慮用戶位置服務。您可以使用URL路徑上下文來排除此路線以執行
+0

感謝您的回覆拉斐爾。是的,我們已經選擇了第一個選項作爲我們的解決方案。 –

+0

當我們使用1st時,我們不使用動態主機。 – wthamira

0

您需要允許sensitiveHeaders。

 zuul: 
     routes: 
      resource: 
       path: /resource/** 
       url: http://localhost:8002/ 
       sensitiveHeaders: Cookie,Set-Cookie 
+0

這裏的問題是zuul沒有授權發送授權標題。 sensitiveHeaders提供了該權限。 – wthamira