How to reset password with UserManager of ASP.NET MVC 5
75,874
Solution 1
It is here ASP.NET Identity reset password
UserManager<IdentityUser> userManager =
new UserManager<IdentityUser>(new UserStore<IdentityUser>());
userManager.RemovePassword(userId);
userManager.AddPassword(userId, newPassword);
Solution 2
I suppose this is newer but there is such an API in Identity 2.0:
IdentityResult result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);
model.Code is generated the following way, and you should send this as a link in a email to make sure the user who is claiming to want to change the password is that one that owns the email address:
string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
Solution 3
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
}
}
Solution 4
try using the user store:
var user = UserManager.FindById(forgotPasswordEvent.UserId);
UserStore<ApplicationUser> store = new UserStore<ApplicationUser>();
store.SetPasswordHashAsync(user, uManager.PasswordHasher.HashPassword(model.ConfirmPassword));
The IdentityMembership is cool, but still lacking some implementation
UPDATE
Identity 2.0 is here now and has a lot more features
Solution 5
Try this code .It is working perfectly:
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);
Related videos on Youtube
![NoWar](https://i.stack.imgur.com/iqMS0.png?s=256&g=1)
Comments
-
NoWar about 3 years
I am wondering if there is a way to reset password with
UserManager
of ASP.NET MVC 5I tried this with user that already has a password but no success. Any clue?
IdentityResult result = UserManager.AddPassword(forgotPasswordEvent.UserId.ToString(), model.ConfirmPassword); if (result.Succeeded) { // } else { AddErrors(result); }
-
mendel almost 9 yearsAnd what do you do if addpassword fails? now user has no password? there are better options here: stackoverflow.com/questions/19524111/…
-
Luiso over 8 yearswhat is you base class here?
-
James White over 8 yearsSorry about the delay, its UserManager<ApplicationUser>. ApplicationUser is derived from IdentityUser. The UserManager has a property "Store" that is (usually) an instance of IUserPasswordStore<YourUserClass,YourIdType>.
-
Luiso over 8 yearsThanks, I had already figured that out, but I don't see any
UpdatePassword
method, could you please tell me what version of Identity and OWIN are you using? -
Luiso over 8 yearsI tried your sample but then I get a
TimeOutException
. I'm still using Identity 1.0 and I don't think I can migrate as it would require major refactoring in my application. Am using Microsoft.Owin 2.10 and OWIN 1.0 -
James White over 8 years<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net46" />
-
sepehr over 8 years@mendel maybe transactionScope is possible solution :msdn.microsoft.com/en-us/library/…
-
Csaba Toth over 7 yearsIf you have the code in the standard
AccountController.cs
, you can just use theUserManager
available there. -
Fissure King over 7 yearsWelcome to Stack Overflow! In order to make sure your answer is as helpful as possible to as broad an audience as possible, you might consider revising it to include (1) an evaluation of what was flawed about the existing code, (2) how your code avoids such pitfalls, and (3) any assumptions or shortcomings in your solution. Have a look here for inspiration. Thanks again for posting an answer, and I hope to see more from you in the future.
-
Valamas over 7 yearshow is this different from the current accepted answer?
-
Ganesh PMP over 7 yearsthe old answer does not tell how to get the userd and pass it as user.id like this: string userName= UserName.Text; var user =userManager.FindByName(userName); it didn't check the condition if the password has null value .
-
zx485 over 7 years@GaneshPMP: That's a valid reply. So incorporate that into your answer.
-
sobelito over 7 yearsThis site has a working example which includes handling results of the calls codereview.stackexchange.com/questions/92737/…
-
FindOutIslamNow about 6 years
UserManager.ResetPasswordAsync(user.Id, UserManager.GeneratePasswordResetTokenAsync(user.Id), model.Password);
-
Saurabh Solanki over 4 yearsis the reset code saved in database ? How it check when we call resetpasswordasync method ?