Рейтинг:
11
Wendelius
Прежде всего, никогда не храните пароли в виде обычного текста. Взгляните на это Хранение паролей: как это сделать.[^]
Что касается самого вопроса, то вместо подсчета записей выберите фактические данные. Другими словами что-то вроде
string query = "select user_type from user_privilege where
user_id=@username and password=@password";
Затем вы можете использовать
Свойство sqlcommand.Метод ExecuteReader (System.Data.SqlClient)[
^] для выполнения запроса и изучения возвращенных данных.
ДОПОЛНЕНИЕ
В качестве примера samll использования считывателя рассмотрим следующее. Обратите внимание, что это не устраняет проблему с паролем.
...
con.Open();
string query = "select user_type from user_privilege where user_id=@username and password=@password";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@username", userNameBox.Text.Trim());
cmd.Parameters.AddWithValue("@password", passwordBox.Text.Trim());
SqlDataReader reader = command.ExecuteReader();
if !(reader.Read()) {
messageBox.Text = "User not found";
Response.Redirect("test.aspx");
} else if (reader[0].ToString() == "Staff") {
messageBox.Text = "Staff";
Response.Redirect("test.aspx");
} else {
Session["admin"] = userNameBox.Text;
Response.Redirect("AdminDashboard.aspx");
messageBox.Text = "Ad";
}
else
{
messageBox.Text = "Failed";
}
...
Subit Timalsina
Большое спасибо братан за предложение я попробую выполнить хеширование но это мой первый раз когда я работаю с такими вещами можете ли вы предоставить его здесь если это возможно
Wendelius
Не знаю, что вы имеете в виду, но в подсказке есть какой-то код, почти готовый к использованию.
Или вы имеете в виду что-то другое?
Subit Timalsina
Я пробовал, но это не работает
Вы имели в виду это правильно
строка пользовательского = "выбрать user_type от user_privilege где user_id =@username и Password =@пароль";
SqlCommand cmd = new SqlCommand(userType, con);
cmd.параметры.AddWithValue ("@username", userNameBox.Text.Trim());
cmd.параметры.AddWithValue("@пароль", безусловно, самый простой способ.Текст.Отделка());
int count = конвертировать.ToInt32(cmd.ExecuteScalar());
Wendelius
Сейчас команда выглядит лучше. Я бы посоветовал сначала попытаться заставить его работать, не беспокоясь о пароле. Когда вы получите соответствующие данные, то сосредоточьтесь на проблеме пароля.
Проблема с паролем не устраняется только внесением изменений в инструкцию SELECT, вам также необходимо изменить вставку данных в таблицу user_privilege. Вот почему потребуется еще некоторое усилие, чтобы заставить его работать.
Wendelius
О, еще одна вещь, вы больше не получаете счет, так что не пытайтесь использовать возвращаемое значение таким образом. Взгляните на пример в MS docs, который я связал с ответом. В нем описывается, как использовать метод Read для чтения строк.
Subit Timalsina
Я новичок в c# извините, если я действительно плохой
Wendelius
Смотрите обновленный ответ
Subit Timalsina
это бросает ошибку в условие else if
Оператор '==' не может быть применен к операндам типа 'method group' и 'string'
Wendelius
Кажется, я забыл скобку в конце вызова метода ToString. Теперь исправлено.