ASP.NET MVC 密码验证器不会对客户端的某些强制性要求发出警告?
ASP.NET MVC password validator doesn't warn about some mandatory requirements on client side?
我正在使用 ASP.NET MVC5,它具有开箱即用的不显眼的验证器,用于客户端验证。我这样设置 IdentityConfig.cs
:
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 8,
RequireNonLetterOrDigit = true,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = true,
};
当密码不是太长时客户端验证正确警告。但它似乎没有对其余标准进行验证(至少一位数字,至少大写字母,至少一个小写字母,甚至不谈论特殊字符)。在我的用例中,将这些放在客户端很重要。
启用这些额外检查的最佳方法是什么?我应该设置自己的非侵入式验证规则吗?这将如何干扰不引人注目的验证?
将 RegularExpressionAttribute
添加到您的 属性。根据 Srinivas 对 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; }
并在视图中
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m =>m.Password)
我正在使用 ASP.NET MVC5,它具有开箱即用的不显眼的验证器,用于客户端验证。我这样设置 IdentityConfig.cs
:
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 8,
RequireNonLetterOrDigit = true,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = true,
};
当密码不是太长时客户端验证正确警告。但它似乎没有对其余标准进行验证(至少一位数字,至少大写字母,至少一个小写字母,甚至不谈论特殊字符)。在我的用例中,将这些放在客户端很重要。
启用这些额外检查的最佳方法是什么?我应该设置自己的非侵入式验证规则吗?这将如何干扰不引人注目的验证?
将 RegularExpressionAttribute
添加到您的 属性。根据 Srinivas 对 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; }
并在视图中
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m =>m.Password)