【问题标题】:Invalid Tenancy Name无效的租户名称
【发布时间】:2017-12-27 10:20:16
【问题描述】:

我正在开发一个 ASP.NET 样板服务项目。

当我保存一个客户端时,它返回一个错误:

租户名称无效

租户名称包含空格。 TenantDto 映射到 Tenant 对象没有任何错误。数据库表TenancyName 列是nvarchar(64)。保存时出错。

【问题讨论】:

    标签: aspnetboilerplate asp.net-boilerplate


    【解决方案1】:

    来自Tenant Management上的文档:

    AbpTenant 类定义了一些基本属性,最重要的是:

    • TenancyName:这是应用程序中租户的唯一名称。不应正常更改。它可用于将子域分配给租户,例如“mytenant.mydomain.com”。租户。TenancyNameRegex 常量定义命名规则。
    • 名称:租户的任意、人类可读的长名称。

    TenancyNameRegex"^[a-zA-Z][a-zA-Z0-9_-]{1,}$",因为子域中不允许有空格。

    如上所述,使用Name 作为租户的可读名称(带空格)。

    【讨论】:

    • 我评论了 TenancyNameRegex 注释,但我仍然收到该错误
    • 我注释了正则表达式注释
    • 不应删除 TenancyNameRegex。你说的是“我卸下了刹车,但我的车还是撞车了”:)
    【解决方案2】:

    在保存租户之前,会根据 TenancyNameRegex 正则表达式对其进行验证。因此,租户名称不能包含空格(根据设计)。 不要删除正则表达式检查,而是添加客户端验证来检查租户名称。

    protected virtual Task ValidateTenancyNameAsync(string tenancyName)
    {
        if (!Regex.IsMatch(tenancyName, AbpTenant<TUser>.TenancyNameRegex))
        {
             throw new UserFriendlyException(L("InvalidTenancyName"));
        }
    
        return Task.FromResult(0);
    }
    

    查看代码 => https://github.com/aspnetboilerplate/aspnetboilerplate/blob/45fe6d9f38b79ab111eaf2a54b507b87c92e544e/src/Abp.Zero.Common/MultiTenancy/AbpTenantManager.cs#L222

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多