如何使用ASP.NET MVC 5的UserManager重置密码

Dev*_*per 41 c# passwords reset-password asp.net-mvc-5 usermanager

我想知道如果有一种方法与重置密码UserManagerASP.NET MVC 5

我尝试使用已经有密码但没有成功的用户.任何线索?

IdentityResult result = UserManager.AddPassword(forgotPasswordEvent.UserId.ToString(), model.ConfirmPassword);
if (result.Succeeded)
{
       //
}
else
{
        AddErrors(result);
}
Run Code Online (Sandbox Code Playgroud)

Dev*_*per 87

这是ASP.NET身份重置密码

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

userManager.RemovePassword(userId);

userManager.AddPassword(userId, newPassword);
Run Code Online (Sandbox Code Playgroud)

  • 如果addpassword失败,你会怎么做?现在用户没有密码?这里有更好的选择:http://stackoverflow.com/questions/19524111/asp-net-identity-reset-password (9认同)
  • 如果你有标准`AccountController.cs`中的代码,你可以使用那里的`UserManager`. (2认同)

小智 30

我认为这是更新的但在Identity 2.0中有这样的API:

IdentityResult result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);
Run Code Online (Sandbox Code Playgroud)

model.Code是按以下方式生成的,您应该将其作为电子邮件中的链接发送,以确保声称要更改密码的用户是拥有该电子邮件地址的用户:

string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
Run Code Online (Sandbox Code Playgroud)

  • `UserManager.ResetPasswordAsync(user.Id, UserManager.GeneratePasswordResetTokenAsync(user.Id), model.Password);` (2认同)

Jon*_*lis 6

尝试使用用户存储:

 var user = UserManager.FindById(forgotPasswordEvent.UserId);

 UserStore<ApplicationUser> store = new UserStore<ApplicationUser>();
 store.SetPasswordHashAsync(user, uManager.PasswordHasher.HashPassword(model.ConfirmPassword));
Run Code Online (Sandbox Code Playgroud)

IdentityMembership 很酷,但仍然缺乏一些实现

更新

Identity 2.0 现已推出并具有更多功能


Mar*_*cik 6

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
    }
}
Run Code Online (Sandbox Code Playgroud)