使用 UserManager 从用户处获取密码
Get password from a user with UserManager
我正在使用 MVC5 ASP.NET 制作一个网站。
我正在使用 Identity framework 2.0 implement class 和 passwordhash、username、email、emailconfirmed 等属性。我正在使用 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”来测试它是否有效,它确实有效。
我希望你们能帮忙。
将密码输入添加到表单标签内的视图
<input type="password" id= "userNewPassword" name="userNewPassword">
在 userView 之后将 userNewPasswor 作为字符串传递给控制器,然后传递给 UserManager
[HttpPost]
public ActionResult ChangePassword(
AspNetUsersViewModel userView,
string userNewPassword){
UserManager<IdentityUser> userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>());
var result = userManager.ChangePassword(_User.Id, userNewPassword , userView.Password);
return RedirectToAction("Index", "ConfigUser");
}
注意:最好的方法是修改 userView 并将 userNewPassword 添加到模型中
更新:
在 visual studio 2013 中,如果您使用 asp.net 默认模板,您会发现流动的 class
public class ChangePasswordBindingModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm new password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
我正在使用 MVC5 ASP.NET 制作一个网站。 我正在使用 Identity framework 2.0 implement class 和 passwordhash、username、email、emailconfirmed 等属性。我正在使用 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”来测试它是否有效,它确实有效。 我希望你们能帮忙。
将密码输入添加到表单标签内的视图
<input type="password" id= "userNewPassword" name="userNewPassword">
在 userView 之后将 userNewPasswor 作为字符串传递给控制器,然后传递给 UserManager
[HttpPost] public ActionResult ChangePassword( AspNetUsersViewModel userView, string userNewPassword){ UserManager<IdentityUser> userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>()); var result = userManager.ChangePassword(_User.Id, userNewPassword , userView.Password); return RedirectToAction("Index", "ConfigUser"); }
注意:最好的方法是修改 userView 并将 userNewPassword 添加到模型中
更新:
在 visual studio 2013 中,如果您使用 asp.net 默认模板,您会发现流动的 class
public class ChangePasswordBindingModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm new password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}