[英]How to take Unicode characters as UserName in ASP.NET Core Mvc?
在我的ASP.NET Core应用中,我想从英语以外的其他语言中获取用户名,但是当我尝试创建用户时出现错误
"User name 'myUnicodeLang' is invalid, can only contain letters or digits."
如何允许UserManager
使用Unicode字符? 我发现一个问题,如何将电子邮件用作用户名,解决方案是。
UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager)
{
AllowOnlyAlphanumericUserNames = false
};
但它在我的项目中不起作用,它说Using the Generic Type UserManager<TUser> requires 1 type argument
#编辑
控制器构造器
public AuthController(UserManager<SchoolUser> userManager,
SignInManager<SchoolUser> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
//Error here
UserManager.UserValidator = new UserValidator<SchoolUser>
(userManager)
{
AllowOnlyAlphanumericUserNames = false };
}
}
问题中的代码看起来像是尝试将ASP.NET MVC代码添加到Core MVC项目中。 那是行不通的,因为在ASP.NET Core MVC中,UserManager 没有 UserValidator属性。 它具有一个UserValidators
集合,该集合允许添加多个自定义验证器。
UserValidator也已更改,并且本身不包含任何配置设置。
配置允许字符的最简单方法是使用Startup.ConfigureServices
中的AddIdentity()
重载,该重载允许设置属性。 更换:
services.AddIdentity<ApplicationUser, IdentityRole>()
同
services.AddIdentity<ApplicationUser, IdentityRole>(options=>
{
options.User.AllowedUserNameCharacters = "whatever";
})
默认值为"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+"
,它可以处理大多数电子邮件地址
您可以在此附加额外的字符,例如:
services.AddIdentity<ApplicationUser, IdentityRole>(options=>
{
var allowed = options.User.AllowedUserNameCharacters
+ "........";
options.User.AllowedUserNameCharacters = allowed;
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.