wake-up-neo.net

So setzen Sie das Kennwort mit UserManager von ASP.NET MVC 5 zurück

Ich frage mich, ob es eine Möglichkeit gibt, das Kennwort mit UserManager von ASP.NET MVC 5 zurückzusetzen

Ich habe dies mit einem Benutzer versucht, der bereits ein Passwort hat, aber keinen Erfolg. Irgendeine Ahnung?

IdentityResult result = UserManager.AddPassword(forgotPasswordEvent.UserId.ToString(), model.ConfirmPassword);
if (result.Succeeded)
{
       //
}
else
{
        AddErrors(result);
}
39
Developer

Es ist hier Kennwort zum Zurücksetzen der ASP.NET-Identität

UserManager<IdentityUser> userManager = 
    new UserManager<IdentityUser>(new UserStore<IdentityUser>());

userManager.RemovePassword(userId);

userManager.AddPassword(userId, newPassword);
85
Developer

Ich nehme an, das ist neuer, aber es gibt eine solche API in Identity 2.0:

IdentityResult result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);

model.Code wird auf folgende Weise generiert und sollte als Link in einer E-Mail gesendet werden, um sicherzustellen, dass der Benutzer, der behauptet, das Kennwort ändern zu wollen, derjenige ist, der die E-Mail-Adresse besitzt:

string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
29
Yan
var validPass= await userManager.PasswordValidator.ValidateAsync(txtPassword1.Text);
if(validPass.Succeeded)
{
    var user = userManager.FindByName(currentUser.LoginName);
    user.PasswordHash = userManager.PasswordHasher.HashPassword(txtPassword1.Text);
    var res= userManager.Update(user);
    if(res.Succeeded)
    {
        // change password has been succeeded
    }
}
5
Martin Staufcik

versuchen Sie es mit dem Benutzerspeicher:

 var user = UserManager.FindById(forgotPasswordEvent.UserId);

 UserStore<ApplicationUser> store = new UserStore<ApplicationUser>();
 store.SetPasswordHashAsync(user, uManager.PasswordHasher.HashPassword(model.ConfirmPassword));

Die IdentityMembership ist cool, aber immer noch es fehlt eine Implementierung

[~ # ~] Update [~ # ~]

Identity 2.0 ist jetzt verfügbar und verfügt über viele weitere Funktionen

4
Jonesopolis

Versuchen Sie diesen Code. Es funktioniert perfekt:

    var userStore = new UserStore<IdentityUser>();

    var userManager = new UserManager<IdentityUser>(userStore);

    string userName= UserName.Text;

    var user =userManager.FindByName(userName);
    if (user.PasswordHash != null  )
    {
        userManager.RemovePassword(user.Id);
    }

    userManager.AddPassword(user.Id, newpassword);
3
Ganesh PMP

Ich habe dies zu meiner UserManager-Klasse hinzugefügt:

    public virtual async Task<IdentityResult> UpdatePassword(ApplicationUser user, string newPassword)
    {
        var passwordStore = Store as IUserPasswordStore<ApplicationUser, string>;

        if (passwordStore == null)
            throw new Exception("UserManager store does not implement IUserPasswordStore");

        var result = await base.UpdatePassword(passwordStore, user, newPassword);

        if (result.Succeeded)
            result = await base.UpdateAsync(user);

        return result;
    }
3
James White

Es gibt Erweiterungen zum Ändern des Kennworts im Namespace Microsoft.AspNet.Identity.

https://msdn.Microsoft.com/en-us/library/dn497466 (v = vs.108) .aspx

2
Marcel Melzig