.NET MVC 6/vNext UserValidator允许使用字母数字字符

Chr*_*xon 8 .net c# asp.net asp.net-mvc asp.net-core

我想要做的只是在.NET MVC 6/vNext注册过程中允许使用字母数字字符,以及我见过的每个教程(即配置Microsoft.AspNet.Identity以允许电子邮件地址作为用户名)引用UserManager.UserValidator,其中现在是在当前框架中不可用.

我已经看到了这一点:Microsoft.AspNet.Identity vnext中的UserValidator看起来与我的问题相同,但是他们UserNameValidationRegex从那时起就将该属性从框架中删除了.辉煌.

services.AddIdentity<ApplicationUser, IdentityRole>(
                o => {
                    o.Password.RequireDigit = false;
                    o.Password.RequireLowercase = false;
                    o.Password.RequireUppercase = false;
                    o.Password.RequireNonLetterOrDigit = false;
                    o.Password.RequiredLength = 2;
                    //o.User.AllowedUserNameCharacters here seems to be the only logical thing I can access
                })
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)

我发现了o.User.AllowedUserNameCharacters,但是由于没有我在此发现的文档,我不知道我必须设置哪种格式?在那里的任何人都在同一条船上工作了吗?

提前致谢.

Jam*_*tan 12

我看了一下aspnet/Identity GitHub存储库并搜索了你找到的属性(AllowedUserNameCharacters).这就是我所拥有的.

UserOptions.csrepo中的类:[Link Here]

/// <summary>
/// Gets or sets the list of allowed characters in the username used to validate user names.
/// </summary>
/// <value>
/// The list of allowed characters in the username used to validate user names.
/// </value>
public string AllowedUserNameCharacters { get; set; } = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
Run Code Online (Sandbox Code Playgroud)

因此,您似乎需要将此属性设置为"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"(即从orginally set string的末尾删除符号.这应该实现您想要的.

根据问题#558,就这一变化的原因而言,他们试图摆脱正则表达式以提高安全性.看看这里的全部细节.