角色實體
角色實體代表了該應用的一個角色。它應該派生自AbpRole類,如下所示:
public class Role : AbpRole<Tenant, User>
{
//這里添加你自定義的角色屬性
}
該類是當你安裝module-zero時創建的。角色數據存儲在數據中的AbpRoles表。你可以在Role類中添加自定義的屬性。
AbpRole定義的最重要的一些屬性包括:
- Name:租戶中角色的唯一名字。
- DisplayName:角色中顯示的名字。
- IsDefault:表示該角色是否是默認賦給新用戶的。
- IsStatic:表示該角色是否是靜態的(預生成的和不能刪除的)。
角色是用來組合權限的。當一個用戶有了一個角色之后,那Ta將會獲得該角色的所有權限。一個用戶可以有多個角色。用戶的權限是該用戶所擁有角色的所有權限的並集。
動態角色 vs 靜態角色
在Module-zero中,角色可以是動態的或靜態的:
- 靜態角色 :靜態角色有一個已知的名字(比如‘admin’),且以后不能改變這個名字(可以改變要顯示的名字)。在系統啟動的時候它已經存在了,並且不能刪除。因此,我們可以基於一個靜態的角色名寫代碼。
- 動態(非靜態)角色:部署之后,我們可以創建動態的角色。然后我們可以為這個角色授予權限,我們也可以把該角色賦予其他用戶,還可以刪除它。在開發的時候,我們可以不知道動態角色的名字。
使用IsStatic屬性設置角色是靜態的還是動態的。還有,我們應該在模塊的PreInitialize上注冊靜態角色。假設我們給租戶一個"Admin"靜態角色:
Configuration.Modules.Zero().RoleManagement.StaticRoles.Add(new StaticRoleDefinition("Admin", MultiTenancySides.Tenant));
這樣,module-zero就知道該靜態的角色了。
默認角色
可以設置一個或多個角色為默認角色。默認情況下,默認角色賦予新添加的或新注冊的用戶。這不是一個開發時屬性,並且可以在發布后設置或者改變。使用IsDefault屬性設置默認角色。
角色管理者
角色管理者是執行角色領域邏輯的服務:
public class RoleManager : AbpRoleManager<Tenant, Role, User>
{
//這里可以添加自己的代碼
}
你可以注入角色管理者,然后使用它創建,刪除,更新角色,為用戶授權以及更多。你可以在這里添加你自己的方法。而且,可以重寫AbpRoleManager基類中的任何方法來滿足自己的需求。
像用戶管理者一樣,角色管理者中的一些方法也返回IdentityResult作為結果,而不是拋出一些情況下的異常。查看《用戶管理》獲取更多信息。
多租戶
和用戶管理相似,角色管理曾將也是在多租戶應用中為單租戶服務的。查看《用戶管理》獲取更多信息。