使用UserManager从用户获取密码

时间:2015-05-17 18:58:04

标签: c# asp.net-mvc asp.net-identity-2 usermanager

我正在使用MVC5 ASP.NET创建一个网站。 我正在使用Identity framework 2.0实现类,其中包含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”来测试它是否有效,它确实如此。 我希望你们能帮忙。

1 个答案:

答案 0 :(得分:3)

  1. 将密码输入添加到表单标记内的View

        protected void Page_Load(object sender, EventArgs e)
        {
    
    
            if (Session["user"] == null)
                Response.Redirect("~/default.aspx");
    
            if (Request .QueryString ["action"]=="edit")
            {
                Panel1.Visible = true;
            }
    
            if (Request.QueryString["edit"] != null)
            {
    
    
                Panel1.Visible = true;
                SqlConnection con2 = new SqlConnection();
                con2.ConnectionString =GNews.Properties.Settings.Default.connectionstring;
                DataTable dt3 = new DataTable();
                con2.Open();
                SqlDataReader myReader = null;
                SqlCommand myCommand = new SqlCommand("select * from loadpost_view where Postid=" + Request.QueryString["edit"].ToString () + "", con2);
                myReader = myCommand.ExecuteReader();
    
    
    
                while (myReader.Read())
                {
                    title_txt.Text=myReader ["Title"].ToString ();
                    bodytxt.Text = myReader["Body"].ToString();
                }
                con2.Close();
            }
    protected void btn_addpost_Click(object sender, EventArgs e)
        {
    string title= title_txt .Text ;
    string body=bodytxt .Text ;
    
    if (Request.QueryString["edit"] != null)
    {
        string message;
    
        string filename = thumb_uploader.FileName;
        string path = HttpContext.Current.Server.MapPath("~") + "\\Thumb";
        string exup = System.IO.Path.GetExtension(thumb_uploader.FileName);
        string[] ext = { ".jpg", ".png", ".jpeg" };
        if (Array.IndexOf(ext, exup) < 0)
        {
            message = "not correct.";
        }
    
        if (thumb_uploader.FileBytes.Length / 1024 > 400)
        {
            message = "not currect.";
        }
    
        while (System.IO.File.Exists(path + "\\" + filename + exup))
        {
            filename += "1";
        }
    
        savepath = path + "\\" + filename;
    
        if (thumb_uploader.HasFile)
        {
            thumb_uploader.SaveAs(savepath);
    
            thumb = thumb_uploader.FileName;
            SqlCommand command;
            SqlDataAdapter da;
            SqlConnection con3 = new SqlConnection();
    
            con3.ConnectionString = GNews.Properties.Settings.Default.connectionstring;
            command = new SqlCommand();
            command.Connection = con3;
            da = new SqlDataAdapter();
            da.SelectCommand = command;
    
            command.CommandText = "UPDATE tbl_post SET Title=@title ,Body=@body ,Thumb=@thu Where Postid=" + Request.QueryString["edit"].ToString();
            con3.Open();
            command.Parameters.AddWithValue("@title", title );
            command.Parameters.AddWithValue("@body", body );
            command.Parameters.AddWithValue("@thu", thumb_uploader .FileName);
    
            command.ExecuteNonQuery();
            con3.Close();
            message = "its ok.";
            lbl_result.Text = message;
       }
       else
       {
            using (SqlConnection con3 = new SqlConnection(GNews.Properties.Settings.Default.connectionstring))
            {
                string sql = "update tbl_post SET Title=@title ,Body=@body  Where Postid=@postid" ;
                using (SqlCommand command = new SqlCommand(sql, con3))
                {
                    con3.Open();
    
                    command.Parameters.AddWithValue("@title", title);
                    command.Parameters.AddWithValue("@body", body);
                    command.Parameters.AddWithValue("@postid",  Request.QueryString["edit"].ToString());
    
                    command.ExecuteNonQuery();
                    con3.Close();
                    message = "its ok.";
                    lbl_result.Text = message;
                }
            }
       }
    }
    
  2. 在userView之后将userNewPasswor作为字符串传递给控制器​​并将其传递给UserManager

      <input type="password" id= "userNewPassword" name="userNewPassword">
    
  3. 注意:最好的方法是修改userView并将userNewPassword添加到模型中

    更新

    在visual studio 2013中如果您使用了asp.net默认模板,您将找到流动的类

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