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

AspNetBoilerplate(ABP) - Authorization 與 Menu 介紹

Abplogo

在 Authorization 的部分,ABP 本身架構了一套以 Permission 爲主的授權機制,Permission 會在 AuthorizationProvider.SetPermissions 中被定義。(如下圖) 

Permission 的使用時機,上至各個 layer,下至 method 都可以掛載 AbpAuthorize attribute 加以套用授權驗證。(下圖爲掛載授權驗證到特定 method) 

又或是在程式碼之中,某段程式碼需要驗證授權,就可以利用 PermissionChecker 來處理。 

而前端的部分,ABP 也已經提供好 js api 供呼叫做驗證。(如下) 

abp.auth.isGranted('Administration.UserManagement.CreateUser'); 

 介紹完如何定義 Permission 及套用授權驗證之後,來介紹如何在 ABP 中,授予權限,在 ABP 有規劃 User 跟 Role 的機制,而 Permission 是可以針對 User 跟 Role 去授予權限的。

如果是要針對 Role 去授予權限,則需要使用 ABP 提供的 RoleManager.SetGrantedPermissionsAsync 方法,而如果是要針對 User 個別授予權限,則使用 UserManager.SetGrantedPermissionsAsync,下圖以使用 RoleManager 爲例。

簡單介紹完 Authorization 之後,就要來介紹一下 Menu 的部分,Menu 通常會跟 Authorization 連動(有權限的功能才看的到 Menu)。

在 ABP,Menu 也是靜態的(就跟 Permission 一樣),Menu 被定義在 NavigationProvider.SetNavigation。(如下圖) 

在上圖中,可以看到最下方的 UserManagement menu 有一個 requiredPermissionName 屬性,這個就是對應到 Permission name 的部分,只有當 user 被授予該 Permission 時,才會看到這個 menu 以及操作功能(該功能也需要掛上權限)。

其他沒有設定 requiredPermissionName 屬性的 menu,則屬於一般 menu,只要登入成功的 user 都可以看到。

至此,Authorization 與 menu 已經介紹完了,而目前有個常見的問題是,很多案例都是將權限與 Menu 資料放在 DB 之中,下次將會分享如何在 ABP 實現動態建立 Permission 與 Menu。

心靈成長-"OUTPUT 最高學以致用法"摘要分享 #前篇
IIS 不停機更版設置

相關文章

 

評論

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

Captcha 圖像