1. 程式人生 > >zuul的動態路由 + zuul簡單認證

zuul的動態路由 + zuul簡單認證

zuul的動態路由
主要繼承以下的類,重寫locateRoutes方法

在方法中加入自己的獲取路由的方式 ,我這裡是基於資料庫配置

寫完後註冊到springioc容器中,這樣zuul就會從資料庫中獲取路由的配置資訊,手動重新整理的需要呼叫zuul內部的事件通知機制來讓zuul重新整理配置

資料庫中的路由設定

請求ccc/hello 轉發到了client服務的hello上

呼叫重新整理方法,會直接重新整理配置

zuul簡單認證
首先要建立一個認證授權服務


暫時不用shiro或者springsecurity,直接判定輸入的使用者名稱或者密碼是否正確

返回的token就直接使用base64簡單加密一下,過期之類的先不加入。接下來在zuul中加入pre過濾器,認證的主要邏輯如下

1、如果是 auth/login 請求則進行引數校驗後放過

2、如果是 auth/check 請求也進行引數校驗後放過

3、其他的請求需要進行token校驗

這裡之後肯定要加入快取,不然每次請求太耗時了,不利於高併發,最後注入spring容器中

登入展示

校驗token

請求時放在header中然後做認證校驗

程式碼倉庫

https://github.com/cdy1996/sample-springcloud/tree/zuul-dymamic

-----------------------------------------------

這邊提一下我配置動態閘道器時出現的狀況

1、載入資料庫會載入兩邊

2、每30秒就會自動載入,即不需要自己呼叫重新整理介面

那麼這2個問題很簡單,因為我們把zuul註冊在eureka上,那麼它每30秒就會去eureka的服務其上拉取資料,拉到後剛好也會觸發重新整理的介面,且zuul有兩個事件監聽器會觸發我們配置的介面zuulRefreshListener和zuulDiscoverRefreshListener,具體觸發時的棧可以看下面兩張圖,至於為什麼又這兩個監聽器,我還未開始看原始碼,等我看了原始碼在告訴大家,或者有高人可以提前給我劇透一下。

3、如何配置serviceId對應的動態路由

這個問題可以很明確的,因為我們建立的實體類中有url也有serviceId,所以很明確是支援的,但是前提是我們的zuul要註冊在erueka上,但是這樣就會出項上面兩個問題,如果想要徹底解決問題,還是建議通過springcloud config+spring bus來達到動態路由,自己來實現的話可能要對其原始碼非常熟知,難度較大(個人看法,大牛勿噴)。

最後附上用serviceId的路由配置,沒有測試同時配置serivceId和url,應該會有個優先


--------------------- 
作者:cdy1996 
來源:CSDN 
原文:https://blog.csdn.net/cdy1996/article/details/80960215 
版權宣告:本文為博主原創文章,轉載請附上博文連結!