Muzaffar Munir Ответов: 2

Как аутентифицировать вход пользователя в C# winform с помощью mysql


Я сталкиваюсь с проблемами при аутентификации логина пользователя, что имя и пароль совпадают с именем и паролем в базах данных MySQL?Пожалуйста, помогите мне.Я хочу войти в систему только для тех пользователей, которые находятся в базах данных, и предупреждающее сообщение о создании новой учетной записи для тех, у кого нет никакой учетной записи в базах данных

Что я уже пробовал:

частный недействительными AccountLogin() {

пробовать
{

string Query = "SELECT * FROM acceptor WHERE name= '" + UserNameTxtBox.Текст + "' и пароль='" + PasswordTxtBox.Текст + "'";
MySqlConnection MyConn2 = новый MySqlConnection(MyConnection2);
MySqlCommand MyCommand2 = new MySqlCommand(Query, MyConn2);
MySqlDataReader MyReader2;
MyConn2.Открыть();
MyReader2 = MyCommand2. ExecuteReader();

Ящик для сообщений.Шоу("Добро пожаловать'"+UserNameTxtBox.Текст+"'");

пока (MyReader2.Читать())
{
}

MyConn2.Рядом();

}

поймать (исключение бывший)
{
Ящик для сообщений.Показать (например, сообщение);
}

2 Ответов

Рейтинг:
2

OriginalGriff

Не делай этого так! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

Кроме того, никогда не храните пароли в открытом тексте - это серьезная угроза безопасности. Здесь есть некоторая информация о том, как это сделать: Хранение паролей: как это сделать.[^]- он основан на SQL Server, но это точно такая же процедура для MySql.

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


Рейтинг:
0

Atlapure Ambrish

В запросе используйте backtick, чтобы заключить зарезервированные имена столбцов word.

Так вы запрос, как показано ниже.

string Query = "SELECT * FROM acceptor WHERE' name`= '" + UserNameTxtBox.Text + "' и 'password' ='" + PasswordTxtBox.Текст + "'";

Кроме того, я бы предложил использовать параметризованный запрос вместо прямого ввода значений.