選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
2 分鐘閱讀時間 (331 個字)

AspNetBoilerplate(ABP) - Authorization 與 Menu 動態篇

Abplogo

上一篇介紹了 Authorization 與 Menu,但 ABP 是設計成將設定資料寫在程式裡的靜態的載入方式,但通常可能會有其他的資料來源,例如資料庫,所以這篇文章就來介紹如何透過從資料庫取得資料來動態載入設定。

首先會有一張系統 Menu 資料表如下圖,而我們可以將 Id 欄位當作 Permisson Name 來使用。(Permission Name 必須是唯一的)

接着在專案上撰寫該 Table 相關的程式碼,例如 Entity, Domain Service...etc。

準備好取得資料的相關程式碼之後,可以找到 AuthorizationProvider 以及 NavigationProvider,這 2 個 Provider 是專門用來提供 Permission 與 Menu 設定資料的,可以看到設定資料分別寫在 SetPermissions 與 SetNavigation 方法中。(如下圖)

接下來將寫好的 Domain Service 透過 Constructor 注入後,分別在 SetPermissions 與 SetNavigation 改成依 Service 取得的資料設定即可。

這邊要注意一下,在 SetPermissions 與 SetNavigation 方法上掛有 UnitOfWork 的屬性,這是因爲原本這 2 個方法被呼叫時,是沒有開啓資料庫連線的,所以透過這個屬性來開啓資料庫連線。

好了,到這邊就完成了動態載入 Permission 與 Menu,這個只是一個基本的做法,依需求的不同,都可以再調整,算是一個有一定程度的彈性可以調整的架構。

webgrease minify 小地雷
心靈成長-"思考的框架"摘要分享 #下篇

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/19, 週日

Captcha 圖像