[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
Для створення авторизації з використанням C# і SQL вам знадобиться поєднання коду на C# для створення користувальницького інтерфейсу і роботи з базою даних, а також база даних, у якій зберігатимуться дані користувачів. Нижче я надам вам загальний план і приблизний код для реалізації базової системи авторизації.
Створення бази даних
Спочатку вам потрібно створити базу даних, яка буде зберігати інформацію про користувачів. У цій базі даних створіть таблицю Users (або аналогічну), яка міститиме поля, як-от Username, PasswordHash і Salt для зберігання імені користувача, хешу пароля та солі (випадкового рядка для посилення безпеки).
1 2 3 4 5 6 7 |
CREATE TABLE USERS ( ID int IDENTITY PRIMARY KEY, HASHED_PASSWORD VARCHAR(255) NOT NULL, USERNAME VARCHAR(255) NOT NULL, SALT VARCHAR(1024) ); |
Створення користувацького інтерфейсу
Використовуйте Windows Forms або WPF для створення користувацького інтерфейсу. Додайте поля для введення імені користувача та пароля, а також кнопку для входу.
Так само, можете використовувати тип проєкту – Console Application.
Код авторизації
Для авторизації визначимо методи, які ви зможете використовувати будь-який із 3-ох раніше перелічених типів додатків:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
// Connection string to your SQL database private string connectionString = "Your_Connection_String"; private void Login() { //Request email and password from the user string username = ""; string password = ""; if (AuthenticateUser(username, password)) { Console.WriteLine("Login successful!"); } else { Console.WriteLine("Invalid username or password."); } } private bool AuthenticateUser(string username, string password) { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string query = "SELECT PasswordHash, Salt FROM Users WHERE Username = @Username"; using (SqlCommand command = new SqlCommand(query, connection)) { command.Parameters.AddWithValue("@Username", username); using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) { string storedHash = reader.GetString(0); string salt = reader.GetString(1); string hashedPassword = HashPassword(password, salt); return storedHash == hashedPassword; } } } } return false; } private string HashPassword(string password, string salt) { using (var sha256 = SHA256.Create()) { byte[] bytes = Encoding.UTF8.GetBytes(password + salt); byte[] hashBytes = sha256.ComputeHash(bytes); return BitConverter.ToString(hashBytes).Replace("-", "").ToLower(); } } |
Важливо
1. Ніколи не зберігайте паролі в базі даних у відкритому вигляді. Замість цього, зберігайте хеші паролів і солі для посилення безпеки.
2 Використовуйте параметризовані запити для запобігання SQL-ін’єкціям.
3. Не забудьте забезпечити безпечне зберігання рядка підключення до бази даних.
Я сподіваюся, що вам сподобалося читати цю статтю, і вона виявилася легкою для розуміння. Будь ласка, дайте мені знати, якщо у вас є якісь коментарі або виправлення.
Так само вам може бути цікава попередня стаття – Назва статті.
Ви хочете навчитися писати код мовою програмування C#?
Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.
Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах