c# - aspboilerplate 中的权限管理
问题描述
我目前正在使用aspboilerplate开发多租户 saas webapp,并希望实现权限管理,但我有点困惑。
首先,我在这里MultitenancySides.Host
找到的和之间有什么区别......MultitenancySides.Tenant
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)]
[AbpAuthorize]
public class EventAppService : EventCloudAppServiceBase, IEventAppService
{
private readonly IEventManager _eventManager;
private readonly IRepository<Event, Guid> _eventRepository;
在租户服务中
[AbpAuthorize(PermissionNames.Pages_Tenants)]
public class TenantAppService : AsyncCrudAppService<Tenant, TenantDto, int, PagedResultRequestDto, CreateTenantDto, TenantDto>, ITenantAppService
{
private readonly TenantManager _tenantManager;
这是我想要并期望在我的 Multitenant Saas (Core + Angualr SPA)中实现权限的内容......将有不同的功能(我说模块),包括 Event ( CRUD
)、Library( CRUD
)、Exam( CRUD
)、Result( CRUD
)、出勤(CRUD
)和我想拥有CRUD
对租户超级管理员的完全访问()权限(默认情况下在创建租户时分配),然后超级管理员可以创建角色(分配模块和权限(CRUD
)到特定模块)。
为简单起见,如果系统具有出勤模块/功能,则默认情况下租户Superadmin
将拥有完全CRUD
访问权限,而如果Staff
角色已创建并限制为CR
但不允许UD
。
我已经完成了本教程,但无法对其进行整理。
谢谢你。
解决方案
MultiTenancySides.Host
首先,和有什么区别MultitenancySides.Tenant
?
MultiTenancySides.Host
→ 只能分配给主机用户 ( user.TenantId == null
)。
MultiTenancySides.Tenant
→ 只能分配给租户用户 ( user.TenantId != null
)。
其次,与 有何
[AbpAuthorize]
不同[AbpAuthorize(PermissionNames.Pages_Tenants)]
?
[AbpAuthorize]
→ 用户已登录。
[AbpAuthorize(PermissionNames.Pages_Tenants)]
→ 用户已登录并拥有该权限。