前面實現功能時沒有考慮權限問題,任何用戶只要能訪問這個應用,都可以對數據進行操作,增加、修改或者刪除數據,現在我們需要增加權限控制,只有授權用戶可以進行相應的操作。
首先需要增加應用的權限定義,在Application.Contracts項目的Permissions中增加權限定義,代碼如下:
namespace ZL.Test.Permissions
{
public static class TestPermissions
{
public const string GroupName = "Test";
public static class Poets
{
public const string Default = GroupName + ".Poets";
public const string Create = Default + ".Create";
public const string Edit = Default + ".Edit";
public const string Delete = Default + ".Delete";
}
}
}
在TestPermissionDefinitionProvider中增加權限的說明:
using ZL.Test.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Localization;
namespace ZL.Test.Permissions
{
public class TestPermissionDefinitionProvider : PermissionDefinitionProvider
{
public override void Define(IPermissionDefinitionContext context)
{
var myGroup = context.AddGroup(TestPermissions.GroupName, L("Permission:Test"));
var booksPermission = myGroup.AddPermission(TestPermissions.Poets.Default, L("Permission:Poets"));
booksPermission.AddChild(TestPermissions.Poets.Create, L("Permission:Poets.Create"));
booksPermission.AddChild(TestPermissions.Poets.Edit, L("Permission:Poets.Edit"));
booksPermission.AddChild(TestPermissions.Poets.Delete, L("Permission:Poets.Delete"));
}
private static LocalizableString L(string name)
{
return LocalizableString.Create<TestResource>(name);
}
}
}
這裏使用了本地化設置,因此在本地化文件中也要增加相應的內容:
"Permission:Test": "測試項目",
"Permission:Poets": "詩人",
"Permission:Poets.Create": "添加詩人",
"Permission:Poets.Edit": "編輯詩人",
"Permission:Poets.Delete": "刪除詩人"
現在,可以運行項目,爲角色進行授權了。以admin用戶進行登錄(ABP模板生成的密碼是1q2w3E*),導航到Identity/Roles,管理角色,在操作中選擇權限,進行對角色的權限授權:
可以看到列出了我們新增加的權限,可以將這些權限授權給admin角色。