How to reset password with UserManager of ASP.NET

2019-03-08 00:41发布

I am wondering if there is a way to reset password with UserManager of ASP.NET MVC 5

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

7条回答
Rolldiameter
2楼-- · 2019-03-08 00:54

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

查看更多
Animai°情兽
3楼-- · 2019-03-08 00:57

There are extension to change the password in the namespace Microsoft.AspNet.Identity.

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

查看更多
The star\"
4楼-- · 2019-03-08 01:00

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);
查看更多
贼婆χ
5楼-- · 2019-03-08 01:06

It is here ASP.NET Identity reset password

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

userManager.RemovePassword(userId);

userManager.AddPassword(userId, newPassword);
查看更多
太酷不给撩
6楼-- · 2019-03-08 01:07

I added this to my UserManager class :

    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;
    }
查看更多
啃猪蹄的小仙女
7楼-- · 2019-03-08 01:08
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
    }
}
查看更多
登录 后发表回答