2015-02-19 4 views
5

Ich möchte eine Überprüfung hinzufügen, dass das Passwort nicht den Benutzernamen in ASP.NET Identity Framework enthält.ASP.NET Identität Custom PasswordValidator Check gegen Benutzername

Eine Implementierung eines benutzerdefinierten PasswordValidator sollte die Arbeit gut machen, aber wie kann ich auf den Benutzernamen zugreifen?

public class CustomPasswordValidator : PasswordValidator 
{ 
    public override async Task<IdentityResult> ValidateAsync(string password) 
    { 
     var result = await base.ValidateAsync(password); 

     //How to access username here 

     return result; 
    } 
} 
+0

der Benutzer ist an dieser Stelle angemeldet, oder ist dies für neue Benutzer? Wenn letzteres nicht möglich ist, wird "User.Identity" erst gesetzt, wenn sich der Benutzer angemeldet hat. – stuartd

+0

@stuartd: Der UserManager validiert das Passwort mit demselben PasswordValidator, während er einen Benutzer erstellt oder das Passwort ändert für einen bestehenden Benutzer –

+0

Irgendwelche Freude? @Niko Hast du das herausgefunden? –

Antwort

0

Sie nehmen vielleicht einen Blick auf Fluent Validation library

Es Prädikat Validator hat (muss), die für Ihr Szenario perfekt. So wird Ihre Gültigkeitsregel wie folgt aussehen:

RuleFor(model => model.Password) 
     .Must((model, username) => !model.Password.Contains(username)) 
+0

Vielen Dank für Ihre Antwort, aber das Ziel war es, diese Validierung nicht in das Modell zu bringen. Ich möchte diese Prüfung im Usermanager mit allen anderen Passwörtern und Benutzeranforderungen zentralisieren. –

Verwandte Themen