【发布时间】:2015-07-29 05:30:09
【问题描述】:
我正在使用 MVC5 ASP.NET 创建一个网站。 我正在使用具有密码哈希、用户名、电子邮件、电子邮件确认等属性的身份框架 2.0 实现类。我正在使用 userManager.ChangePassword(user.Id, Oldpassword, Newpassword);,但我不知道如何从用户那里获取纯文本(字符串)的密码
[HttpPost]
public ActionResult ChangePassword(AspNetUsersViewModel userView)
{
UserManager<IdentityUser> userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>());
var result = userManager.ChangePassword(_User.Id, "123456789", userView.Password);
return RedirectToAction("Index", "ConfigUser");
}
现在我已经硬编码了用户当前密码“123456789”来测试它是否有效,它确实有效。 我希望你们能提供帮助。
【问题讨论】:
-
“从用户那里获取纯文本密码”是什么意思?
-
@PaoloCosta 现在用户只有一个 PasswordHash 和一个 SecurityStamp 属性,而不是直接的 Password 属性(“123456789”)。我正在使用 Identity 2.0 中的 IdentityUser 实现。
-
如果它是一个哈希,你就不能将它收回。这是为了安全而设计的
-
这是可以理解的。但是如果用户想使用函数 userManger.ChangePassword(id, old password, new password); 更改他/她的密码,则需要知道用户的旧密码。
-
不,它只是检查旧密码是否对哈希正确。与登录时检查密码的操作相同。
标签: c# asp.net-mvc asp.net-identity-2 usermanager