2015-02-19 15 views
5

Desidero aggiungere un controllo per verificare che la password non contenga il nome utente nel framework Identità ASP.NET.Identità ASP.NET Password personalizzata Verifica con nome utente

Un'implementazione di un PasswordValidator personalizzato dovrebbe fare il lavoro bene, ma come posso accedere al nome utente?

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

È l'utente connesso a questo punto, o si tratta per i nuovi utenti? Se quest'ultimo, potrebbe non essere possibile, dato che 'User.Identity' non sarà impostato fino a quando l'utente non ha effettuato l'accesso. – stuartd

+0

@stuartd: UserManager convaliderà la password utilizzando lo stesso PasswordValidator durante la creazione di un utente o modificando la password per un utente esistente –

+0

Qualche gioia? @Niko Lo hai capito? –

risposta

0

Si può dare un'occhiata a Fluent Validation library

Ha un validatore predicato (Must) che è perfetto per lo scenario. Così la vostra regola di convalida sarà simile:

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

Grazie per la risposta, ma l'obiettivo era ** non ** mettere questa convalida nel modello. Voglio centralizzare questo controllo in Usermanager con tutte le altre richieste di password e utente. –

Problemi correlati