ASP.NET身份,需要“强”密码

时间:2014-01-06 15:33:57

标签: c# asp.net asp.net-mvc asp.net-identity

今天早上也许我的googlin'技能不是很好,但我似乎无法找到如何使用个人用户帐户使用新的asp.net mvc5项目设置不同的密码要求(而不是最小/最大长度)

[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }

我不知道我想要做什么密码要求,但可能是最小长度和需要一个小写字母,大写字母和数字的组合。

我知道如何实现这一点(最好通过模型属性)?

4 个答案:

答案 0 :(得分:109)

您可以在App_Start\IdentityConfig.cs

中配置密码要求
// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
    RequiredLength = 4,
    RequireNonLetterOrDigit = false,
    RequireDigit = false,
    RequireLowercase = false,
    RequireUppercase = false,
};

答案 1 :(得分:9)

另一种选择是创建IIdentityValidator<string>的实现,并将其分配给PasswordValidator的{​​{1}}属性。它只有一个方法UserManager,您可以在那里定义任何类型的密码验证。我知道这与使用模型类中的属性没有一些相同的优点,就像自动客户端一样方面的验证,但我想我会把它作为替代任何人的替代品。

e.g。

ValidateAsync

答案 2 :(得分:7)

您可以将RegularExpressionAttribute与此答案中的规则一起使用:

Regex to validate password strength

答案 3 :(得分:0)

/*Passwords must be at least min. 8 and max. 16 characters in length, 
minimum of 1 lower case letter [a-z] and 
a minimum of 1 upper case letter [A-Z] and
a minimum of 1 numeric character [0-9] and
a minimum of 1 special character: $ @ $ ! % * ? & + = # 
PASSWORD EXAMPLE : @Password1 
*/
pass = TextBoxPss1.Text;  

Regex regex = new Regex("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&+=#]) [A-Za-z\\d$@$!%*?&+=#]{8,16}$");
    Match match = regex.Match(pass);

    if (match.Success)
    {TextBoxPss1.Text = "OK" }