1. 程式人生 > >springcloud zuul許可權攔截功能

springcloud zuul許可權攔截功能

現在業務的需求大致如下圖註釋所示,如果建立人臉的功能可以只提供給user訪問,而檢視完成所有的狀態只能master訪問,其他的兩個角色都可以訪問在這裡插入圖片描述
考慮這個功能的實現新從介面的定義,以及如何獲取使用者資訊的角度思考,介面定義如下,需要使用者登入的時候吧token記錄到cookiet裡面去,需要記錄返回的json資訊在這裡插入圖片描述
這時候就考慮建立一個使用者模組來對使用者資訊處理在這裡插入圖片描述
設定統一的配置在這裡插入圖片描述
因為後續的使用者服務對外提供介面,所以這裡設計使用者服務成多模組,如果是對外提供服務的就建立server模組,如果需要依賴其他服務的再建立client模組,後面整合專案的時候會提取所有模組都共同部分,作為基礎模組

,這樣就可以減少程式碼的冗餘
在這裡插入圖片描述
設計三層架構,包括資料庫物件,以及service層,dao層,下面重點是看看controller層的邏輯
在這裡插入圖片描述
邏輯處理的時候,每種可能情況做處理,分別給出處理的結果,這裡使用了列舉類來封裝返回的資訊。在這裡插入圖片描述
這裡把角色分別做了不同的儲存處理,就是為了判斷以後登入的角色判斷,而且為了避免因為重新整理頁面導致往redis重複寫入不同的redis,又從cookie裡面獲取了請求的token然後在處理
在這裡插入圖片描述

總結流程,從gateway路由到服務的過程,會被過濾掉cookie資訊,這時候需要配置上全域性的敏感頭不過濾的配置在config服務上,其次單個的服務,針對使用者的角色處理,如果是註冊人臉服務的使用者,角色判斷,openid判斷,如果是檢視完成的人臉特徵的管理員使用者,除了token之外還需要UUID,以及存到redis中,最後在人臉的識別的服務裡面,對許可權進行校驗的時候,就從使用者登入的cookie裡面獲取資訊,比如使用者的角色等。
這裡還有很關鍵的邏輯就是自定義繼承了ZuulFilter的這個類的run()方法邏輯,這裡的一切許可權判斷的開始。在這裡插入圖片描述

下節將會針對zuul許可權的管理做一次全面的總結,畢竟這裡涉及的模組以及基礎模組的抽取部分還沒有完善。