ABP框架中临时授予权限

Temporarily grant permissions in ABP framework

我有一个站点 运行 ABP.io 框架,我想让访问者将自己注册为新租户。问题是使用 ITenantAppService 创建租户需要匿名用户没有的权限。

有没有办法在不登录的情况下临时执行需要提升权限的代码?

我找到了一个不完美但至少有效的解决方法。

我添加了一个新的 PermissionValueProvider,我在其中检查当前请求的堆栈跟踪以检查它是否来自注册页面:

var callOriginatesFromTenantRegistrationPage = Environment.StackTrace.IndexOf("Web.Pages.Registration", StringComparison.Ordinal) > 0;

如果是并且检查的权限是 AbpTenantManagement.Tenants.Create 我将请求设置为已授予。

不将此设置为答案,因为我希望有更好的解决方案。

临时禁用权限不是一个好的做法。您需要为此目的创建一个新的 AppService:IPublicTenantAppService 并且不应该有此服务的权限。如果您有特定的业务逻辑,请创建一个新的域服务并在 PublicTenantAppService

中调用该服务