我有一个身份服务器模块正在运行(来自 Abp.io)。我激活了多租户模式,现在我有一个模式,我可以通过它更改租户,如下图:
好的,我的问题是:我想从一个 URL 参数而不是这个模式接收这个租户。我发现 Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy 是提供此开关的模块;和 TenantSwitchModal.cshtml.cs 类是为我们更改此 cookie 的位置。
那么,我必须覆盖 TenantSwitchModal.cshtml.cs 还是有其他方法?
我想可能有一种方法可以让我不需要覆盖 Abp 核心中的任何内容。但我不知道在哪里。有什么帮助吗?
答案 0 :(得分:1)
我认为您正在寻找的是 QueryStringTenantResolveContributor
。
它是 ABP 中可用的默认租户解析器之一,默认启用。
<块引用>QueryStringTenantResolveContributor:尝试查找当前租户 ID 来自查询字符串参数。参数名称是 __tenant by 默认。
示例查询:
{URL}/Account/Login?__tenant={yourtenantname}
答案 1 :(得分:0)
如果您想通过子域(如mytenant1.mydomain.com)或整个域(如mytenant.com)确定当前租户,您可以配置AbpTenantResolveOptions
添加域租户解析器。
Configure<AbpTenantResolveOptions>(options =>
{
options.AddDomainTenantResolver("{0}.mydomain.com");
});
您还可以添加自己的租户解析器类。
创建您自己的租户解析器,如下所示:
using System.Threading.Tasks;
using Volo.Abp.MultiTenancy;
namespace MultiTenancyDemo.Web
{
public class MyCustomTenantResolveContributor : TenantResolveContributorBase
{
public override string Name => "Custom";
public override Task ResolveAsync(ITenantResolveContext context)
{
//TODO...
}
}
}
在你的模块类中配置
Configure<AbpTenantResolveOptions>(options =>
{
options.TenantResolvers.Add(new MyCustomTenantResolveContributor());
});