.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