Трёхзвенная архитектура (Авторизация) - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д