Получить пароль от пользователя с помощью UserManager

Я делаю сайт с MVC5 ASP.NET. Я использую класс реализации Identity Framework 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", чтобы проверить, работает ли он. Я надеюсь, что вы, ребята, можете помочь.

1 ответ

Решение
  1. Добавьте ввод пароля в представление внутри тега формы

      <input type="password" id= "userNewPassword" name="userNewPassword">
    
  2. Передайте userNewPasswor как строку в контроллер после userView и передайте его 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, вы найдете текущий класс

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; }
}
Другие вопросы по тегам