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