Подтвердить что ты не робот

Идентификация ASP.NET, требует "сильных" паролей

Возможно, мои навыки 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; }

Я не знаю, какие требования к паролю я хочу сделать пока, но, вероятно, сочетание минимальной длины и требующее один строчный регистр, заглавную букву и число.

Любая идея, как я могу это выполнить (желательно с помощью атрибутов модели)?

4b9b3361

Ответ 2

Вы можете настроить требования к паролю в App_Start\IdentityConfig.cs

// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
    RequiredLength = 4,
    RequireNonLetterOrDigit = false,
    RequireDigit = false,
    RequireLowercase = false,
    RequireUppercase = false,
};

Ответ 3

Другой вариант - создать реализацию IIdentityValidator<string> и присвоить его свойству PasswordValidator вашего UserManager. У этого метода есть только один метод ValidateAsync, и вы можете определить любой тип проверки пароля, который вам нравится в нем. Я знаю, что это не имеет тех же преимуществ, что и использование атрибутов в вашем классе модели, поскольку автоматическая проверка на стороне клиента, но просто подумал, что я поместил бы это в качестве альтернативы для всех, кто приходит.

например.

public class CustomPasswordValidator : IIdentityValidator<string>
{

    public int MinimumLength { get; private set; }
    public int MaximumLength { get; private set; }

    public CustomPasswordValidator(int minimumLength, int maximumLength)
    {
        this.MinimumLength = minimumLength;
        this.MaximumLength = maximumLength;
    }
    public Task<IdentityResult> ValidateAsync(string item)
    {
        if (!string.IsNullOrWhiteSpace(item) 
            && item.Trim().Length >= MinimumLength 
            && item.Trim().Length <= MaximumLength)
            return Task.FromResult(IdentityResult.Success);
        else return Task.FromResult(IdentityResult.Failed("Password did not meet requrements."));

    }
}

Ответ 4

/*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)(?=.*[[email protected]$!%*?&+=#]) [A-Za-z\\[email protected]$!%*?&+=#]{8,16}$");
    Match match = regex.Match(pass);

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