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)