Трёхзвенная архитектура (Авторизация) - C#

Узнай цену своей работы

Формулировка задачи:

В общем мне нужно сделать так,чтобы я смог авторизоваться и программа подгрузила мою аватарку , ник и тд. Я это пытаюсь реализовать с помощью Сессий. Я передаю через клиента логин и пароль серверу,если они верны я записываю в новую таблицу сессию и логин,к которому подходит эта сессия.Сессия на стороне клиента и БД совпадает.Но вот как организовать авторизацию я не понимаю. Реализация -------- На стороне Сервера --------
 void IInoService.Authentication(string Login, string Password)
        {
            try
            {
                SqlDataAdapter sda = new SqlDataAdapter("SELECT Login,Password FROM users WHERE login ='" + Login + "'and Password ='" + Password + "'", Connection);
                DataTable dt = new DataTable();
                Connection.Open();
                sda.Fill(dt);
                Connection.Close();
                if (dt.Rows.Count == 1) ///если пароль и логин верны записываю в БД логин и сессию
                {
                    var sid = OperationContext.Current.SessionId;
                    Connection.Open();
                    SqlCommand sqlcommand = new SqlCommand("INSERT INTO GUID(GUID,Login) VALUES (@GUID,@Login)", Connection);
                    sqlcommand.Parameters.AddWithValue("@GUID", sid);
                    sqlcommand.Parameters.AddWithValue("@Login", Login);
                    sqlcommand.ExecuteNonQuery();
                }
            }
           finally { Connection.Close(); }
        }
--------- На стороне клиента ---------
private void AutButton_Click(object sender, EventArgs e)
        {
            try
            { 
                var client = new InoService.InoServiceClient("NetTcpBinding_IInoService"); ///создаю клиента
                client.Authentication(LoginA.Text, PasswordA.Text); ///передаю логин и пароль на сервер
                client.Close();
                Text = client.InnerChannel.SessionId;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
Как видно , сессии совпадают,но я не очень понимаю как их в дальнейшем использовать для авторизации,ведь с помощью методов проверку устроить нельзя через условие

Решение задачи: «Трёхзвенная архитектура (Авторизация)»

textual
Листинг программы
 private void AutButton_Click(object sender, EventArgs e)
        {
            try
            { 
                var client = new InoService.InoServiceClient("NetTcpBinding_IInoService");
                client.Authentication(LoginA.Text, PasswordA.Text);
                client.Close();
                Text = client.InnerChannel.SessionId;
                SqlDataAdapter sda = new SqlDataAdapter("SELECT Login,Password FROM users WHERE login ='" + LoginA.Text + "'and Password ='" + PasswordA.Text + "'", Connection);
                DataTable dt = new DataTable();
                Connection.Open();
                sda.Fill(dt);
                Connection.Close();
                if (dt.Rows.Count == 1)
                {
                    this.Hide();
                    Form2 GotoForm2 = new Form2();
                    GotoForm2.ShowDialog();
                    
                }
                else
                {
                    MessageBox.Show("Неправильно введены данные");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5