我有一个运行ABP.io框架的网站,我想让访问者将自己注册为新租户。问题是创建具有ITenantAppService
的租户需要匿名用户没有的权限。
有没有办法临时执行需要提升权限而不登录的代码?
临时禁用权限不是一个好的做法。您需要为此目的创建一个新的AppService:IPublicTenantAppService
,并且该服务不应该有权限。如果您有特定的业务逻辑,请创建一个新的域服务,并在PublicTenantAppService
我找到了一个不完美但至少可以工作的解决方案。
我添加了一个新的PermissionValueProvider
,我检查当前请求的堆栈跟踪,以检查它是否来自注册页面:
var callOriginatesFromTenantRegistrationPage = Environment.StackTrace.IndexOf("Web.Pages.Registration", StringComparison.Ordinal) > 0;
如果是,并且检查的权限为AbpTenantManagement.Tenants.Create
,则设置请求为授予。
不把这个作为答案,因为我希望有更好的解决方案。