2016-09-22 54 views
-1

我有我的登录表单,我试图参数查询登录用户。但它似乎给用户登录失败的错误。我的代码在这里。请告诉我我在这里做错了什么。Asp.net验证错误没有登录用户

public void LoginUser() 
{ 
    string UserNameFromHTML = Page.Request.Form["UserNameIput"]; 
    string UserPasswordFromHTML = Page.Request.Form["UserPasswordInput"]; 
    string QueryString = "SELECT User_Id, User_Name, User_Password FROM um_Personnel WHERE User_Name = @UserName and User_Password = @UserPassword"; 
    SqlCommand Command = new SqlCommand(); 
    Command.CommandText = QueryString; 
    Command.Connection = ConnectionString; 
    Command.Parameters.AddWithValue("@UserName", UserNameFromHTML); 
    Command.Parameters.AddWithValue("@UserPassword", UserPasswordFromHTML); 
    using (SqlDataAdapter Data_Adapter = new SqlDataAdapter(Command)) 
    { 
     DataSet Data_Set = new DataSet(); 
     Data_Adapter.Fill(Data_Set); 
     if (Data_Set.Tables[0].Rows.Count > 0) 
     { 
      Response.Redirect("CMS/Dashboard.aspx"); 
     } 
    } 
} 

,我在我的按钮调用这个函数onClick事件作为

<button type="submit" class="submit" onclick='<% LoginUser(); %>'> 

整个HTML代码是在这里

<fieldset> 
      <legend class="legend">User Login</legend> 
      <div class="input"> 
       <input type="text" placeholder="Enter User Name" id="UserNameIput" required /> 
       <span><i class="fa fa-envelope-o"></i></span> 
      </div> 
      <div class="input"> 
       <input type="password" placeholder="Enter Password" id="UserPasswordInput" required /> 
       <span><i class="fa fa-lock"></i></span> 
      </div> 
      <button type="submit" class="submit" onclick='<% LoginUser(); %>'><i class="fa fa-long-arrow-right"></i></button> 
     </fieldset> 
+0

你有调试一步一步你的代码?这个函数是否被调用?什么是错误,你期望什么,你得到了什么? – Aristos

+0

你真的在这里得到任何东西:'Page.Request.Form [“UserPasswordInput”];'因为这不是通常的方式在asp.net – Aristos

+0

是的,我试着调试它。数据适配器尝试填充数据集时出错。 –

回答

1

的代码

<input type="text" placeholder="Enter User Name" id="UserNameIput" required /> 

这部分没有包含th e name属性是返回参数的属性。 要使它发挥作用,加上name(在ID没有从我所看到的使用),并使其为:

<input type="text" placeholder="Enter User Name" name="UserNameIput" required /> 

那么你可以背后得到的代码输入为:

Page.Request.Form["UserNameIput"]; 

对所有需要获取代码背后的值或使用服务器控件的输入执行相同操作。我问你,如果你一步一步地调试你的代码,但显然你没有这样做,并且不检查你是否有什么值。所以你可能会有更多的错误。

调试代码一步一步的检查参数,检查SQL运行正常 - 和改善你的代码。

0

后你检查用户是否具有正确的登录名和密码,你就需要实际Login用户。

public void LoginUser() 
{ 
    string UserNameFromHTML = Page.Request.Form["UserNameIput"]; 
    string UserPasswordFromHTML = Page.Request.Form["UserPasswordInput"]; 
    string QueryString = "SELECT User_Id, User_Name, User_Password FROM um_Personnel WHERE User_Name = @UserName and User_Password = @UserPassword"; 
    SqlCommand Command = new SqlCommand(); 
    Command.CommandText = QueryString; 
    Command.Connection = ConnectionString; 
    Command.Parameters.AddWithValue("@UserName", UserNameFromHTML); 
    Command.Parameters.AddWithValue("@UserPassword", UserPasswordFromHTML); 
    using (SqlDataAdapter Data_Adapter = new SqlDataAdapter(Command)) 
    { 
     DataSet Data_Set = new DataSet(); 
     Data_Adapter.Fill(Data_Set); 
     if (Data_Set.Tables[0].Rows.Count > 0) 
     { 
      FormsAuthentication.RedirectFromLoginPage(UserNameFromHTML, true); //will return the user to the page who needs a user who is logged in    
     } 
     else 
     { 
      Responce.Redirect("~/Home/Index/"); 
     } 
    } 
} 

而且在Web.config补充一点:

<authentication mode="Forms"> 
    <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx" protection="All" path="/" timeout="30" /> 
</authentication> 

您可以检查this页面的基本起点。