如何使用ASP.NET MVC 5的UserManager重置密码
我想知道是否有一种方法来重置ASP.NET MVC 5 UserManager
的密码
我尝试了这个用户已经有一个密码,但没有成功。 任何线索?
IdentityResult result = UserManager.AddPassword(forgotPasswordEvent.UserId.ToString(), model.ConfirmPassword); if (result.Succeeded) { // } else { AddErrors(result); }
这里是ASP.NET身份重置密码
UserManager<IdentityUser> userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>()); userManager.RemovePassword(userId); userManager.AddPassword(userId, newPassword);
我想这是更新的,但Identity 2.0中有这样一个API:
IdentityResult result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);
model.Code按以下方式生成,您应该将其作为电子邮件中的链接发送,以确保声称要更改密码的用户是拥有该电子邮件地址的用户:
string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
尝试使用用户存储:
var user = UserManager.FindById(forgotPasswordEvent.UserId); UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(); store.SetPasswordHashAsync(user, uManager.PasswordHasher.HashPassword(model.ConfirmPassword));
IdentityMembership很酷,但仍然缺乏一些实现
UPDATE
身份2.0现在在这里,有更多的function
我把这个添加到我的UserManager类中:
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; }
试试这个代码,它是完美的工作:
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);
有扩展名更改密码在命名空间Microsoft.AspNet.Identity。
https://msdn.microsoft.com/en-us/library/dn497466(v=vs.108).aspx