You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sitecore 10.1中是否可以修改用户名的验证规则?

Sitecore 10.1 自定义用户名验证规则方案

配置变更说明

Sitecore 10.1版本重构了身份验证体系,原有旧版本中AccountNameValidation配置项已被废弃,用户名验证规则调整为基于ASP.NET Identity Core体系实现。

方案1:通过配置补丁调整基础验证规则

如果仅需调整允许使用的用户名字符集、邮箱唯一性等基础规则,可直接通过Sitecore配置补丁实现:

  • 在App_Config/Include目录下创建自定义配置补丁文件,命名可自定义,如Sitecore.Identity.UserRules.Custom.config
  • 写入如下配置内容,按需调整参数值:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set/">
  <sitecore>
    <identity>
      <UserOptions>
        <!-- 自定义允许的用户名字符集,示例包含大小写字母、数字、横杠、下划线、点、@、加号 -->
        <AllowedUserNameCharacters set:value="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+" />
        <!-- 可选配置:要求用户名绑定的邮箱全局唯一 -->
        <RequireUniqueEmail set:value="true" />
      </UserOptions>
    </identity>
  </sitecore>
</configuration>
  • 保存文件后重启Sitecore实例即可生效。

方案2:自定义验证器实现复杂规则

如果需要实现正则校验、长度限制、特殊规则判定等复杂验证逻辑,可通过自定义用户验证器实现:

  • 实现IUserValidator<SitecoreUser>接口编写自定义验证逻辑,示例代码如下:
using Microsoft.AspNetCore.Identity;
using Sitecore.Security.Accounts;
using System.Threading.Tasks;

namespace YourCustomNamespace
{
    public class CustomUserNameValidator : IUserValidator<SitecoreUser>
    {
        public async Task<IdentityResult> ValidateAsync(UserManager<SitecoreUser> manager, SitecoreUser user)
        {
            // 示例:限制用户名长度为3-20位
            if (string.IsNullOrWhiteSpace(user.UserName) || user.UserName.Length <3 || user.UserName.Length >20)
            {
                return IdentityResult.Failed(new IdentityError { Description = "用户名长度需控制在3-20位之间" });
            }

            // 可添加更多自定义规则,比如正则匹配、敏感词校验等
            return IdentityResult.Success;
        }
    }
}
  • 将编译后的dll部署到Sitecore网站的bin目录
  • 通过配置补丁注册自定义验证器,替换默认实现:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <services>
      <register 
        serviceType="Microsoft.AspNetCore.Identity.IUserValidator`1[[Sitecore.Security.Accounts.SitecoreUser, Sitecore.Kernel]], Microsoft.AspNetCore.Identity"
        implementationType="YourCustomNamespace.CustomUserNameValidator, YourAssemblyName"
        patch:instead="register[@serviceType='Microsoft.AspNetCore.Identity.IUserValidator`1[[Sitecore.Security.Accounts.SitecoreUser, Sitecore.Kernel]], Microsoft.AspNetCore.Identity']"
      />
    </services>
  </sitecore>
</configuration>
  • 重启Sitecore实例后规则生效。

内容的提问来源于stack exchange,提问作者Kato Tetsuya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 08:45:03