2014-02-16 3 views
1

Мой текущий код позволяет перейти на следующую страницу, даже если имя пользователя/пароль является ложным, что не является желаемым эффектом, в котором я ошибаюсь? что должно быть помещено в это if-заявление?Проверьте, принадлежит ли логин в базе данных

private bool UserLogin(string un, string pw){ 
     SqlConnection con = new SqlConnection(strcon); 
     SqlCommand cmd = new SqlCommand("Select username from users where [email protected] and [email protected]", con); 
     cmd.Parameters.AddWithValue("@un", un); 
     cmd.Parameters.AddWithValue("@pw", pw); 
     con.Open(); 
     string result = Convert.ToString(cmd.ExecuteScalarAsync()); 
     if (????????????) 
     { 
      return true; 
     } 
      return false; 
    } 
+2

Не храните текстовые пароли в базе данных. Используйте алгоритм хеширования с солью. –

+1

Также рассмотрите возможность использования структуры для обработки логинов. не сворачивайте свой собственный –

+0

I kno I kno, но это строго для того, чтобы научиться ползать, тогда я могу начать ходить и бегать –

ответ

2

Вы пропускаете Казнь попробуйте заменить cmd.ExecuteScalarAsync() с:

cmd.ExecuteScalar(); 

если вы делаете вид, чтобы вернуть Синхронное выполнение, возвращая результат в той же функции, используя «Async» методы могут не работать как предполагают.

Или попробовать это, но я предполагаю, что это не имеет особого смысла, по крайней мере, для меня:

object obj = await cmd.ExecuteScalarAsync(); 

ждут будет делать трюк.

+0

Не выполняется ExecuteScalarAsync? –

+0

@ shree.pat18 no он возвращает задачу , которая является ссылкой на то, когда код действительно выполнен. – Dalorzo

+1

ОК, понял! Не читал его правильно в первый раз. –

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