Трёхзвенная архитектура (Авторизация) - 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);
}
}