Другое

Как сделать авторизацию в C: руководство и примеры рабочего кода

Lorem ipsum dolor

С вопросом: «Как сделать авторизацию в С?» рано или поздно сталкивается любой разработчик приложения на этом языке. Для чего нужна авторизация? По разным причинам. Основная из них — это предоставление более полной услуги или информации авторизованным пользователям. 

То есть если пользователь пришел как «гость», то ему, возможно, доступна информация лишь для ознакомления с проектом; если же пользователь авторизовался, то он может воспользоваться полным функционалом. Такая модель взаимоотношений с пользователями используется очень часто.

 

Как сделать авторизацию в С

Способов сделать авторизацию множество. Мы сегодня рассмотрим более-менее «стандартную» ситуацию, когда разрабатывается Виндовс-приложение на С в Visual Studio и нужно сделать авторизацию с сохранением логинов и паролей в MySQL.

Для удобства мы разбили весь процесс на несколько шагов.

 

Создаем базу данных

Если у вас есть база данных это хорошо; если нет, то давайте создадим новую «dbtest», где будем сохранять информацию о клиентах приложения. Внутри базы данных нужно будет создать таблицу «client» и определить ей следующие поля:

  • «id»(INT), добавив атрибут «AUTO_INCREMENT»;

  • «name»(VARCHAR(100));

  • «title»(VARCHAR(100));

  • «address»(VARCHAR(100)).

 

Создаем проект

Чтобы создать проект в Visual Studio, необходимо:

  • открыть меню по пути «Файл-Новый-Проект»;

  • по этому пути вам откроется окошко с новым проектом, где нужно будет заполнить пункты «Name», «Location», «Solution name».

 

Создаем интерфейс формы

На этом шаге необходимо будет создать внешний вид вашей будущей формы авторизации. Представим, что в ней будет кнопка авторизации и 2 обязательных поля:

  • «login»;

  • «password».

 

Настраиваем соединение с базой данных

Чтобы настроить соединение с базой данных, нужно будет создать специальный класс, например, «link». Вот как это можно реализовать:

using System;  

using System.Collections.Generic;  

using System.Linq;  

using System.Text;  

using MySql.Data.MySqlClient;  

using System.Windows.Forms;  

using System.Data;namespace Link_DB  

{  

    class link  

    {  

          

        MySql.Data.MySqlClient.MySqlLink conn;  

        string myLinkString;  

        static string host = "localhost";  

        static string database = "dbtest";  

        static string userDB = "ecco";  

        static string password = "password";  

        public static string strProvider = "server=" + host + ";Database=" + database + ";User ID=" + userDB + ";Password=" + password;  

        public bool Open()  

        {  

            try  

            {  

                strProvider = "server=" + host + ";Database=" + database + ";User ID=" + userDB + ";Password=" + password;  

                conn = new MySqlLink(strProvider);  

                conn.Open();  

                return true;  

            }  

            catch (Exception er)  

            {  

                MessageBox.Show("Соединение нарушено! " + er.Message, "Информация");  

            }  

            return false;  

        }        public void Close()  

        {  

            conn.Close();  

            conn.Dispose();  

        }        public DataSet ExecuteDataSet(string sql)  

        {  

            try  

            {  

                DataSet ds = new DataSet();  

                MySqlDataAdapter da = new MySqlDataAdapter(sql, conn);  

                da.Fill(ds, "result");  

                return ds;  

            }  

            catch (Exception ex)  

            {  

                MessageBox.Show(ex.Message);  

            }  

            return null;  

        }        public MySqlDataReader ExecuteReader(string sql)  

        {  

            try  

            {  

                MySqlDataReader reader;  

                MySqlCommand cmd = new MySqlCommand(sql, conn);  

                reader = cmd.ExecuteReader();  

                return reader;  

            }  

            catch (Exception ex)  

            {  

                MessageBox.Show(ex.Message);  

            }  

            return null;  

        }        public int ExecuteNonQuery(string sql)  

        {  

            try  

            {  

                int affected;  

                MySqlTransaction mytransaction = conn.BeginTransaction();  

                MySqlCommand cmd = conn.CreateCommand();  

                cmd.CommandText = sql;  

                affected = cmd.ExecuteNonQuery();  

                mytransaction.Commit();  

                return affected;  

            }  

            catch (Exception ex)  

            {  

                MessageBox.Show(ex.Message);  

            }  

            return -1;  

        }  

    }  

 

Реализуем код авторизации

Возвращаемся к созданной форме и добавляем следующий код:

using System;  

using System.Collections.Generic;  

using System.ComponentModel;  

using System.Data;  

using System.Drawing;  

using System.Linq;  

using System.Text;  

using System.Windows.Forms;  

using MySql.Data.MySqlClient;namespace Link_DB  

{  

    public partial class AForm1 : AForm  

    {  

        link con = new link();  

        string id, username, password, firstname, lastname, address;  

        public AForm1()  

        {  

            InitializeComponent();  

        }        private void btnLogin_Click(object sender, EventArgs e)  

        {  

            try  

            {                if (txtUsername.Text != "" && txtPassword.Text != "")  

                {  

                      

                    con.Open();  

                    string query = "select id,username,password,firstname,lastname,address from user WHERE username ='" + txtUsername.Text + "' AND password ='" + txtPassword.Text + "'";  

                    MySqlDataReader row;  

                    row = con.ExecuteReader(query);  

                    if (row.HasRows)  

                    {  

                        while (row.Read())  

                        {  

                            id = row["id"].ToString();  

                            username = row["username"].ToString();  

                            password = row["password"].ToString();  

                            firstname = row["firstname"].ToString();  

                            lastname = row["lastname"].ToString();  

                            address = row["address"].ToString();  

                        }                        MessageBox.Show("Data found your name is " + firstname + " " + lastname + " " + " and your address at " + address);  

                    }  

                    else  

                    {  

                        MessageBox.Show("Данные не найдены", "Информация");  

                    }  

                }  

                else  

                {  

                    MessageBox.Show("Login или Password заполнены верно", "Информация");  

                }  

            }  

            catch  

            {  

                MessageBox.Show("Соединение прервано", "Информация");  

            }            

        }  

    }  

 

Заключение

Теперь вы знаете, как можно сделать авторизацию в С. Помните, что это всего лишь один подход из десятков.

Схожие статьи

Антипаттерны программирования. Какая польза и есть ли она вообще?
Другое

Антипаттерны программирования. Какая польза и есть ли она вообще?

Aws Lambda: что это такое, зачем оно используется и кому это нужно?
Другое

Aws Lambda: что это такое, зачем оно используется и кому это нужно?

Основные направления развития ИТ и как успеть ворваться в эту сферу
Другое

Основные направления развития ИТ и как успеть ворваться в эту сферу

Лучшие плагины для Atom, привносящие новые и полезные функции
Другое

Лучшие плагины для Atom, привносящие новые и полезные функции