2013-12-14 19 views
11

Benutzer angemeldet ist und will etwas Großes tun, und ich möchte, dass sie ihr Passwort erneut eingeben, damit ich sicherstellen kann, dass sie dem Benutzer, die angemeldet ist.Überprüfen neu eingegebene Passwort angemeldete Benutzer von

Wie kann ich bestätigen, dass dieses Passwort für den Kontoinhaber gilt?

Wäre glücklich zu wissen, wie man es über ASP.NET Identity oder wie man eine gespeicherte Proc gegen die AspNetUsers Tabelle gehen oder wie man es über Entity Framework.

Antwort

12

Wie kann ich bestätigen, dass dieses Passwort für den Kontoinhaber ist?

, wie es über ASP.NET Identität tun

Um in aktuell angemeldeten Benutzers, bieten dem Anwender VerifyView das Passwort erneut bestätigen Passwort eingeben und die folgende Methode verwenden zu überprüfen, ob der Benutzer vorhanden ist.

var user = await UserManager.FindAsync(User.Identity.Name,VerifyViewModel.Password)

Wenn der Benutzer gefunden wird, ist die aktuelle Anforderung das gleiches vom Kontoinhaber.


Membership.ValidateUser ist aus früheren Version von Membership Rahmen, nicht von ASP.NET Identität.

+0

Aus irgendeinem Grund erwartete ich CheckPassword dies zu tun. Tut es nicht .. Das funktioniert super danke. – Bobby

4

Mit Identity-Framework wollen Sie nie die Datenbank direkt treffen. Verwenden Sie immer die bereitgestellte API. Die Datenbankstruktur hat sich in den letzten Jahren mehrmals geändert, so dass das Hinzufügen von Abhängigkeiten (z. B. in einem Datenkontext) ohne Grund Arbeit hinzufügt.

Informationen zur asynchronen Verwendung finden Sie in der Antwort, die bereits von jd4u bereitgestellt wird.

Für synchron identifizieren, dass das Passwort des aktuellen Benutzers übereinstimmt, müssen Sie zuerst die folgenden:

using Microsoft.AspNet.Identity; 

wie dies in einer Reihe von synchronen Erweiterungsmethoden bringt Identitäts Rahmen.

können Sie dann mit Find auf dem UserManager wie folgt überprüfen:

var user = UserManager.Find(User.Identity.Name, password); 
if (user != null) 
{ 
    // It is them! 
} 

Wenn der Benutzer nicht null ist, dann haben Sie ein Spiel von Passwort und aktuelle Benutzername.

3

Sie können auch UserManager.CheckPassword() Erweiterungsfunktion verwenden:

UserManagerExtensions.CheckPassword Method

string id = User.Identity.GetUserId(); 
var user = UserManager.FindById(id); 
if(!UserManager.CheckPassword(user, model.Password)) 
{ 
    ModelState.AddModelError("Password", "Incorrect password."); 
} 
0

Sie Usermanager verwenden können, das zu tun:

if(UserManager.PasswordHasher.VerifyHashedPassword("hashedPassword", "password") 
    != PasswordVerificationResult.Failed) 
{ 
    // password is correct 
} 

Weitere Informationen finden Sie auf den Link: How to check password manually in Asp.Net identity 2?

Verwandte Themen