我目前正在使用 aspboilerplate 来开发多租户saas webapp ,并且想实施权限管理,但是我有点困惑。
首先,MultitenancySides.Host
和MultitenancySides.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 link和second 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教程,但无法对其进行梳理。
谢谢。
答案 0 :(得分:2)
首先,
MultiTenancySides.Host
和MultitenancySides.Tenant
有什么区别?
MultiTenancySides.Host
→只能分配给主机用户(user.TenantId == null
)。
MultiTenancySides.Tenant
→只能分配给租户用户(user.TenantId != null
)。
第二,
[AbpAuthorize]
与[AbpAuthorize(PermissionNames.Pages_Tenants)]
有何区别?
[AbpAuthorize]
→用户已登录。
[AbpAuthorize(PermissionNames.Pages_Tenants)]
→用户已登录并具有该权限。