ASP.NET Identity reset password
Or how can I reset without knowing the current one (user forgot password)?
If you want to change a password using the UserManager but you do not want to supply the user's current password, you can generate a password reset token and then use it immediately instead.
string resetToken = await UserManager.GeneratePasswordResetTokenAsync(model.Id);IdentityResult passwordChangeResult = await UserManager.ResetPasswordAsync(model.Id, resetToken, model.NewPassword);
In current release
Assuming you have handled the verification of the request to reset the forgotten password, use following code as a sample code steps.
ApplicationDbContext =new ApplicationDbContext()String userId = "<YourLogicAssignsRequestedUserId>";String newPassword = "<PasswordAsTypedByUser>";ApplicationUser cUser = UserManager.FindById(userId);String hashedNewPassword = UserManager.PasswordHasher.HashPassword(newPassword);UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(); store.SetPasswordHashAsync(cUser, hashedNewPassword);
In AspNet Nightly Build
The framework is updated to work with Token for handling requests like ForgetPassword. Once in release, simple code guidance is expected.
Update:
This update is just to provide more clear steps.
ApplicationDbContext context = new ApplicationDbContext();UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(context);UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(store);String userId = User.Identity.GetUserId();//"<YourLogicAssignsRequestedUserId>";String newPassword = "test@123"; //"<PasswordAsTypedByUser>";String hashedNewPassword = UserManager.PasswordHasher.HashPassword(newPassword); ApplicationUser cUser = await store.FindByIdAsync(userId);await store.SetPasswordHashAsync(cUser, hashedNewPassword);await store.UpdateAsync(cUser);
Deprecated
This was the original answer. It does work, but has a problem. What if AddPassword
fails? The user is left without a password.
The original answer: we can use three lines of code:
UserManager<IdentityUser> userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>());userManager.RemovePassword(userId);userManager.AddPassword(userId, newPassword);
See also: http://msdn.microsoft.com/en-us/library/dn457095(v=vs.111).aspx
Now Recommended
It's probably better to use the answer that EdwardBrey proposed and then DanielWright later elaborated with a code sample.