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

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

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

 services.AddIdentity( 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() .AddDefaultTokenProviders(); 

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

提前致谢。

我查看了aspnet / Identity GitHub存储库 ,并搜索了您找到的属性( AllowedUserNameCharacters )。 这就是我所拥有的。

来自repo中的UserOptions.cs类: [Link Here]

 ///  /// Gets or sets the list of allowed characters in the username used to validate user names. ///  ///  /// The list of allowed characters in the username used to validate user names. ///  public string AllowedUserNameCharacters { get; set; } = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+"; 

因此,您似乎需要将此属性设置为"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" (即从orginally设置的字符串末尾删除符号。这应该达到您想要的效果。

根据问题#558,为什么要进行此更改,他们试图摆脱正则表达式以提高安全性。 看看这里的全部细节。

正如@DoubleVoid在注释中指出的那样,您可以使用空字符串来允许任何字符。

如果您想在电子邮件中使用特殊字符。 请尝试以下代码

  services.Configure(options = { options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+-/=?^_`{|}~.@"; }); 

有效的电子邮件地址https://en.wikipedia.org/wiki/Email_address#Local-part