我正在使用 ASP.NET MVC5,它具有不显眼的验证器,用于开箱即用的客户端验证。我这样设置我的 IdentityConfig.cs
:
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 8,
RequireNonLetterOrDigit = true,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = true,
};
当密码不太长时,客户端验证会正确发出警告。但它似乎没有对其余标准进行验证(至少一位数字,至少大写字母,至少一个小写字母,甚至不谈论特殊字符)。在我的用例中,将这些放在客户端非常重要。
启用这些额外检查的最佳方法是什么?我应该设置自己的非侵入性验证规则吗?这会如何干扰不引人注目的验证?
最佳答案
将 RegularExpressionAttribute
添加到您的属性中。基于斯里尼瓦斯对 Regex for Password Must be contain at least 8 characters, least 1 number and both lower and uppercase letters and special characters 的回答,以下内容应该适合您的规则
[RegularExpression(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}", ErrorMessage = "...")]
public string Password { get; set; }
并在 View 中
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m =>m.Password)
关于jquery - ASP.NET MVC 密码验证器不会警告客户端的某些强制要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42082366/