2016-09-22 6 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

Вы действительно получаете что-то здесь: 'PageRequest.Form [" UserPasswordInput "];' потому что это не обычный способ на asp.net – Aristos

+0

да, я попробовал отладить его. Ошибка вышла, когда адаптер данных пытается заполнить набор данных. –

ответ

1

эта часть кода

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

не содержал e name Свойство, которое возвращает параметр. Чтобы заставить его работать, добавьте name (идентификатор не используется от того, что я вижу), и сделать это как:

<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 страницу для основного старта.