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);
}
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);
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);
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
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;
}
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);
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
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
}
}