aspboilerplate中的权限管理

时间:2018-12-29 05:48:18

标签: c# asp.net angular asp.net-core aspnetboilerplate

我目前正在使用 aspboilerplate 来开发多租户saas webapp ,并且想实施权限管理,但是我有点困惑。

首先,MultitenancySides.HostMultitenancySides.Tenant之间的区别是我发现here ....

 public override void SetPermissions(IPermissionDefinitionContext context) 
    { 
       context.CreatePermission(PermissionNames.Pages_Users, L("Users")); 
        context.CreatePermission(PermissionNames.Pages_Roles, L("Roles")); 
        context.CreatePermission(PermissionNames.Pages_Tenants, L("Tenants"), multiTenancySides: MultiTenancySides.Host); 
        context.CreatePermission(PermissionNames.Pages_Events, L("Events"), multiTenancySides: MultiTenancySides.Tenant); 
    } 

其次,[AbpAuthorize]

有何不同
[AbpAuthorize(PermissionNames.Pages_Tenants)] 

我在事件服务(first linksecond link)中找到了那些,

[AbpAuthorize] 
    public class EventAppService : EventCloudAppServiceBase, IEventAppService 
     { 
        private readonly IEventManager _eventManager; 
         private readonly IRepository<Event, Guid> _eventRepository;

和TenantService

 [AbpAuthorize(PermissionNames.Pages_Tenants)] 
    public class TenantAppService : AsyncCrudAppService<Tenant, TenantDto, int, PagedResultRequestDto, CreateTenantDto, TenantDto>, ITenantAppService 
     { 
        private readonly TenantManager _tenantManager; 

这就是我想要并期望在我的Multitenant Saas中实现权限的方法。(Core + Angualr SPA) ... 会有不同的功能(我说模块),包括事件(CRUD,库(CRUD),考试(CRUD),结果(CRUD),出勤率({ {1}},我想拥有对租户超级管理员的完全访问权限(CRUD)(默认情况下,在创建租户时分配),然后超级管理员可以创建角色(分配的模块和权限(CRUD )到特定模块)。

为简单起见,如果系统具有“出勤”模块/功能,则默认情况下,租户的CRUD将具有完整的Superadmin访问权限,而如果创建了CRUD角色并将其限制为{{1 }},但不允许Staff使用。

我已完成this教程,但无法对其进行梳理。

谢谢。

1 个答案:

答案 0 :(得分:2)

  

首先,MultiTenancySides.HostMultitenancySides.Tenant有什么区别?

MultiTenancySides.Host→只能分配给主机用户(user.TenantId == null)。

MultiTenancySides.Tenant→只能分配给租户用户(user.TenantId != null)。

  

第二,[AbpAuthorize][AbpAuthorize(PermissionNames.Pages_Tenants)]有何区别?

[AbpAuthorize]→用户已登录。

[AbpAuthorize(PermissionNames.Pages_Tenants)]→用户已登录并具有该权限。