繁体   English   中英

如何在ASP.NET Core Mvc中将Unicode字符用作UserName?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM