Comment réinitialiser le mot de passe avec UserManager de ASP.NET MVC 5

je me demande s'il y a un moyen de réinitialiser le mot de passe avec UserManager de ASP.NET MVC 5

j'ai essayé avec un utilisateur qui a déjà un mot de passe mais pas de succès. Aucun indice?

IdentityResult result = UserManager.AddPassword(forgotPasswordEvent.UserId.ToString(), model.ConfirmPassword);
if (result.Succeeded)
{
       //
}
else
{
        AddErrors(result);
}
37
demandé sur Academy of Programmer 2014-03-19 23:59:03

7 réponses

c'est ici ASP.NET identité réinitialiser mot de passe

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

userManager.RemovePassword(userId);

userManager.AddPassword(userId, newPassword);
82
répondu Academy of Programmer 2017-05-23 12:10:29

je suppose que c'est plus récent mais il y a une API dans L'identité 2.0:

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

.Le Code est généré de la façon suivante, et vous devriez envoyer ce lien dans un courriel pour vous assurer que l'utilisateur qui prétend vouloir changer le mot de passe est celui qui possède l'adresse courriel:

string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
25
répondu Yan 2014-09-13 22:03:00

essayez d'utiliser le magasin de l'utilisateur:

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

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

L'appartenance à L'identité est cool, mais toujours manque de mise en œuvre

mise à JOUR

identité 2.0 est ici maintenant et a beaucoup plus de fonctionnalités

3
répondu Jonesopolis 2017-05-23 11:54:50

j'ai ajouté ceci à ma classe UserManager:

    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;
    }
2
répondu James White 2015-10-25 17:42:41

essayez ce code .Il fonctionne parfaitement:

    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);
2
répondu Ganesh PMP 2017-03-04 06:28:15

il y a une extension pour changer le mot de passe dans L'espace de nom Microsoft.AspNet.Identité.

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

1
répondu Marcel Melzig 2017-05-30 07:11:24
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
    }
}
1
répondu Martin Staufcik 2018-06-29 14:30:35