我正在使用 asp.net 身份进行授权和身份验证。我尝试使用希伯来字母创建用户名,但没有奏效。
使用旧的会员资格,我能够使用希伯来语字符作为用户名。标识是否可以使用非拉丁字符?
我认为您可以尝试这样做:
创建一个新的自定义用户验证器来执行您自己的自定义验证(您也可以使用正则表达式进行验证(:
public class CustomUserValidator<TUser> : IIdentityValidator<TUser>
where TUser : class, Microsoft.AspNet.Identity.IUser
{
public CustomUserValidator(UserManager<TUser> manager)
{
_manager = manager;
}
public async Task<IdentityResult> ValidateAsync(TUser item)
{
// Your custom validation here
}
}
然后,在创建应用程序用户管理器时,可以将默认用户验证器设置为此新验证器类的实例:
manager.UserValidator = new CustomUserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
[注:]默认验证器如下:
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
};
in Program.cs(或 Startup.cs(添加选项。用户.允许用户名字符:
builder.Services.AddIdentity<ApplicationUser, ApplicationRole>(
options =>
{
options.SignIn.RequireConfirmedAccount = true;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = false;
options.User.AllowedUserNameCharacters = "אבגדהוזחטיכלמנסעפצקרשתךםןףץabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
}
Yor 还可以使用:
options.User.AllowedUserNameCharacters = String.Empty;
允许所有字符