Ich wollte die Kennwortregel so anpassen, dass sie Zeichen aus mindestens zwei der folgenden Gruppen enthält: Kleinbuchstaben, Großbuchstaben, Ziffern und spezielle Symbole .
Dies kann ich nicht tun, indem ich nur die PasswordValidator-Optionen ändere:
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
Also habe ich stattdessen einen benutzerdefinierten Validator erstellt, indem ich IIdentityValidator erweitert habe ...
Erstellen Sie zunächst eine neue Datei CustomPasswordValidator.cs in Ihrem Erweiterungsordner:
public class CustomPasswordValidator : IIdentityValidator<string>
{
public int RequiredLength { get; set; }
public CustomPasswordValidator(int length) {
RequiredLength = length;
}
public Task<IdentityResult> ValidateAsync(string password) {
if (String.IsNullOrEmpty(password) || password.Length < RequiredLength)
{
return Task.FromResult(IdentityResult.Failed(
String.Format("Password should be at least {0} characters", RequiredLength)));
}
int counter = 0;
List<string> patterns = new List<string>();
patterns.Add(@"[a-z]");
patterns.Add(@"[A-Z]");
patterns.Add(@"[0-9]");
patterns.Add(@"[!@#$%^&*\(\)_\+\-\={}<>,\.\|""'~`:;\\?\/\[\] ]");
foreach (string p in patterns)
{
if (Regex.IsMatch(password, p))
{
counter++;
}
}
if (counter < 2)
{
return Task.FromResult(IdentityResult.Failed(
"Please use characters from at least two of these groups: lowercase, uppercase, digits, special symbols"));
}
return Task.FromResult(IdentityResult.Success);
}
}
Gehen Sie dann zu IdentityConfig.cs und initialisieren Sie es in der Create-Methode:
manager.PasswordValidator = new CustomPasswordValidator(8 );
Weitere Informationen finden Sie in meinem Tutorial .