简体   繁体   中英

Get password from a user with UserManager

I'm making a website with MVC5 ASP.NET. I'm using Identity framework 2.0 implement class with properties such as passwordhash, username, email, emailconfirmed and so on. I'm using userManager.ChangePassword(user.Id, Oldpassword, Newpassword);, but i can't figure out how i should get a password from a user as plain text (string)

    [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");

    }

As now I'm i have hardcoded users current password "123456789" to test if it works, and it does. I hope you guys can help.

  1. Add password input to the View inside the form tag

      <input type="password" id= "userNewPassword" name="userNewPassword"> 
  2. Pass the userNewPasswor as string to the controller after the userView and the pass it to the 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"); } 

Note: the Best way is to Modify the userView and add the userNewPassword to the model

Update:

in the visual studio 2013 the if you used the asp.net default template you will find the flowing 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; }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM