2015-08-27 4 views
1

У меня есть страница входа, в которой я написал код для входа в админ-часть, но он не работает. Я не знаю, в чем проблема, этот код верен, все еще получая несанкционированный доступ. , помочь мнеОшибка страницы входа в систему asp.net C#

string str = ConfigurationManager.ConnectionStrings["ottscon"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(str)) 
     { 
      SqlCommand cmd = new SqlCommand("Select UserName,Password from login where [email protected] and [email protected]", con); 
      con.Open(); 
      cmd.Parameters.AddWithValue("@userid", TextBox1.ToString()); 
      cmd.Parameters.AddWithValue("@passid", TextBox2.ToString()); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataSet ds= new DataSet(); 
      da.Fill(ds); 
      if (ds.Tables[0].Rows.Count>0) 
      { 

       Session["login"] = TextBox1.Text; 
       Response.Redirect("admintrator123/Default.aspx"); 
      } 
      else 
      { 
       Label1.Text = "Unauthorized Access"; 
       Label1.ForeColor = System.Drawing.Color.Red; 
      } 
     } 
+0

Вы хранить пароли в виде обычного текста? – Kamo

+0

да как обычный текст – shashank

+0

Это своего рода опасно, вы должны действительно думать о хранении их в хешированной форме. Когда вы выполняете запрос непосредственно в БД, вы получаете какой-либо результат для параметров, которые вы передаете? – Kamo

ответ

0

Первое использование значения текста внутри текстового поля (существующий ToString() возвращается тип объекта TextBox):

cmd.Parameters.AddWithValue("@userid", TextBox1.Text); 
cmd.Parameters.AddWithValue("@passid", TextBox2.Text); 

Попробуйте использовать этот SQL, чтобы проверить, если запись есть (внутри new SqlCommand()):

SELECT CASE WHEN EXISTS (
    SELECT * 
    FROM [login] 
    WHERE [email protected] and [email protected] 
) 
THEN CAST(1 AS BIT) 
ELSE CAST(0 AS BIT) END 

Итак, вы можете проверить на BOOL, а не на строки и существования больше понимания на ВАЗе т происходит.

После этого вы можете прочитать значение таким образом:

using (var reader = cmd.ExecuteReader()) 
{ 
    while (reader.Read()) 
    { 
     bool exist = reader.GetBoolean(0); 
    } 
} 
+0

Как это помогает OP? Вы предлагаете совсем другой подход. –

+0

Это будет ясно, если у него возникнут проблемы с данными sql. –

+0

Согласен, но это не решит проблему OP? Он должен будет полностью изменить запрос в коде. –

-2

попробовать

logincommand = "Select UserName,Password from login where UserName='"+TextBox1.Text+"' and Password='"+TextBox2.Text+"'" 
SqlCommand cmd = new SqlCommand(logincommand ,con); 

и удалять

 cmd.Parameters.AddWithValue("@userid", TextBox1.ToString()); 
     cmd.Parameters.AddWithValue("@passid", TextBox2.ToString()); 
+0

SQL Injection attack !! –

+0

Это предоставляет запрос на SQL-инъекцию! – Kamo

2

Вы не передавая значения правильно

TextBox1.ToString() неправильно

использование

TextBox1.Text

+0

все еще не может получить доступ к панели управления администратора – shashank

 Смежные вопросы

  • Нет связанных вопросов^_^