【发布时间】:2021-04-25 08:33:40
【问题描述】:
我有一个运行ABP.io 框架的站点,我想让访问者将自己注册为新租户。问题是使用ITenantAppService 创建租户需要匿名用户没有的权限。
有什么方法可以在不登录的情况下临时执行需要提升权限的代码?
【问题讨论】:
标签: abp
我有一个运行ABP.io 框架的站点,我想让访问者将自己注册为新租户。问题是使用ITenantAppService 创建租户需要匿名用户没有的权限。
有什么方法可以在不登录的情况下临时执行需要提升权限的代码?
【问题讨论】:
标签: abp
暂时禁用权限不是一个好习惯。为此,您需要创建一个新的 AppService:IPublicTenantAppService,并且不应该有对此服务的权限。如果您有特定的业务逻辑,请创建一个新的域服务并在 PublicTenantAppService 中调用该服务
【讨论】:
我找到了一个不完美但至少有效的解决方法。
我添加了一个新的PermissionValueProvider,我在其中检查当前请求的堆栈跟踪以检查它是否来自注册页面:
var callOriginatesFromTenantRegistrationPage = Environment.StackTrace.IndexOf("Web.Pages.Registration", StringComparison.Ordinal) > 0;
如果是并且检查的权限是AbpTenantManagement.Tenants.Create,我将请求设置为已授予。
不将此设置为答案,因为我希望有更好的解决方案。
【讨论】: