Dev*_*per 41 c# passwords reset-password asp.net-mvc-5 usermanager
我想知道如果有一种方法与重置密码UserManager的ASP.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
UserManager<IdentityUser> userManager =
new UserManager<IdentityUser>(new UserStore<IdentityUser>());
userManager.RemovePassword(userId);
userManager.AddPassword(userId, newPassword);
Run Code Online (Sandbox Code Playgroud)
小智 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)
尝试使用用户存储:
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 现已推出并具有更多功能
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)
| 归档时间: |
|
| 查看次数: |
66100 次 |
| 最近记录: |