ASP.NET Identity reset password ASP.NET Identity reset password asp.net asp.net

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.