Додавання користувачів у базу даних

Щоб додати користувачів у БД, треба одержати його ім'я і пароль із відповідних текстових полів, а також створити оброблювач події, що додає користувача в БД і повідомляє про успішне або невдале додавання користувача. Наступний оброблювач події викликає допоміжну функцію AddUser для додавання облікових даних користувача в БД:

private void butNewUser_Click (object sender, System.EventArgs e)

{

if (AddUser (txtUserName.Text, txtPassword.Text))

spnNote.InnerText = "User added.";

else

spnNote.InnerText = "User exists. Choose a

different user name";

}

Допоміжна функція AddUser, яка показана в наступному коді, шифрує пароль перед записом облікових даних в БД, здійснюваною командою SQL INSERT. Якщо ім'я користувача, що додається, вже є в БД, блок обробки виключень перехоплює помилку і повертає значення False, що свідчить про невдале додавання користувача.

private bool AddUser(string UserName, string Password)

{

// Оголосити змінну для визначення стану операції

bool bSuccess = false;

// Зашифрувати пароль.

Password = FormsAuthentication.

HashPasswordForStoringInConfigFile

(Password, "SHA1");

// Створити команду для вставки імені і пароля

// користувача

OleDbCommand oleConnmand = new OleDbCommand

("INSERT INTO Users" + " VALUES

('" + UserName + "',

'" + Password + "')", oledbUsers);

// Якщо такий запис вже існує, перехопити помилку

try

{

// Відкрити з’єднання з БД.

oledbUsers.Ореn();

// Якщо запис добавленао встановити змінну стану

// у true...

if (oleCommand.ExecuteNonQuery()!=0)

{

bSuccess = true

//... і закрити з’єднання

oledbUsers.Close();

}

}

catch

{

// якщо ні, вважати операцію невдалою

bSuccess = false;

// Закрити з’єднання

oledbUsers.Close();

}

// Повернути повідомлення про успішне або ні

// завершення

return bSuccess;

}

Допоміжна функція CheckPassword (див. код нижче) шифрує введений пароль, пише в БД запис з таким же ім'ям користувача і порівнює зашифрований пароль з паролем із знайденим в БД записом. Звернення до БД проводиться в блоці обробки виключень, щоб користувач не побачив повідомлення про помилки, що виникають при конфліктах із-за блокування БД.

private| bool| CheckPassword|(string| UserName|, string| Password|)

{

// Оголосити змінну| для визначення| стану операції|

bool| bSuccess| = false|;

// Зашифрувати пароль

Password| = FormsAuthentication|.HashPasswordForStoringInConfigFile

(Password,"SHA1|");

// Створити команду для витягу| радка| із заданим|

// значенням| UserName|

OleDbCommand| oleCommand| = new| OleDbCommand|

("SELECT| * FROM| Users|" + " WHERE| UserName| =

'" + txtUserName|.Text +"', oledbUsers|);

// Слідкувати за помилками| в БД.

try|

{

// Відкрити з’єднання| з БД

oledbUsers|.Oреn();

//Знайти запис|

OleDbDataReader| rdrUsers| = oleCommand|.ExecuteReader();

while| (rdrUsers|.Read{))

{

if| (Password| == rdrUsers|["Password|"].ToString())

bSuccess| = true|;

}

// Закрити з’єднання|

oledbUsers|.Close();

}

catch|

{

// Якщо запис| знайдено|, вважати| операцію| невдалою|

bSuccess| = false|;

// Закрити з’єднання|

oledbUsers|.Close();

}

return| bSuccess|;

}

2.6. Аутентифікація Passport|

При аутентифікації Passport | ідентифікація користувачів виконується за допомогою служби єдиного входу Microsoft| Passport|. М|ціль|ета служби Passport| — дозволити користувачам Інтернету входити| на різні Web-сайты|, що вимагають аутентифікації, за допомогою єдиних посвідчень. При цьому Web-додатки| можуть витягувати відомості про корист|із|увача з профілю, Microsoft|, що зберігається.

Перевага аутентифікації Passport| в тому, що вона звільня|визволяє|є клієнта від необхідності запам'ятовувати окремі облікові дані для кожного Web-сайта| і дозволяє йому централізовано зберігати свій профіль. Аутентифікація Passport| дозволяє отримати доступ і до інших сервісів Microsoft|, таких, як Passport| Express| Purchase |.

2.6.1. Як задіювати аутентифікацію Passport|

Аутентифікація Passport| ідентифікує користувачів за допомогою централізованої служби аутентифікації Microsoft Passport дозволяє користувачам застосовувати єдині посвідчення для отримання доступу до декількох Web-додатків. Щоб включити аутентифікацію Passport в Web-додатку, необхідно встановити пакет Passport SDK, який знаходиться в розділі Downloads на сайті MSDN (див. сторінку за адресою

http://msdn.microsofl.com/downloads ).

Коли користувач звертається до додатка, що застосовує аутентифікацію Passport, ASP.NET перевіряє наявність на клієнтському комп'ютері файлу cookie служби Passport. Якщо такий cookie не знайдений, ASP.NET направляє користувача на вхідну сторінку служби Passport. Після входу користувача служба Passport аутентифікує його, записуючи на призначений для користувача комп'ютер файл cookie з ідентифікаційними даними, і направляє користувача на запитану Web-сторінку.

Процес аутентифікації Passport виконується у наступний спосіб:

1. Встановіть пакет Passport SDK. Хоча цей пакет не входить в Visual Studio, в.NET Framework є класи, що дозволяють працювати з Passport SDK після установки цього пакету.

2. Встановіть режим аутентифікації у файлі Web.config у Passport і забороніть доступ всім користувачам, що не пройшли аутентифікацію.

3. За допомогою події assportAuthentication_ OnAuthenticate отримайте доступ до призначеного для користувача профілю служби Passport і авторизації користувача.

4. Напишіть процедуру для завершення роботи користувача, що видаляє файли cookie служби Passport з призначеного для користувача комп'ютера.

Наприклад, наступні параметри файлу Web.config включають аутентифікацію Passport і примушують всіх користувачів проходити її:

<authentication mode="Passport" />

<authorization>

<deny| users="?"" />

<!-- Заборонити достуг користувачам, що не пройшли аутентифікацію -->

</authorization>

Якщо запустити додаток з такими параметрами Web.config на локальному комп'ютері, він автоматично направить користувача на вхідну сторінку служби Passport.

Після входу користувача Passport записує на його комп'ютер файл cookie, підтверджуючий авторизацію, і направляє користувача на початково запитану ним сторінку. Відомості про користувача зберігаються в профілі служби Passport. Доступ до цього профілю дістають за допомогою події PassportAuthentication_OnAuthenticate, визначеної в модулі Global.asax, наприклад, так:

// Цей рядок має бути на початку модуля

using System.Web.Security;

protected void PassportAuthentication_OnAuthenticate|(Object sender, PassportAuthenticationEventArgs| e)

{

// Якщо аутентифікація успішна

// отримати ідентифікаційні дані Passport для сеансу

if (e.Identity.Authenticated)

{

Response.Wnte("Name: " + e. Identity["FirstName|"]+

" " + e.Identity["LastName|"] + "<br>");

Response.Write("Address: " + e.Identity["City"] +

" " + e.Identity["PostalCode"] + "<br>");

Response.Write("Email: " + e.Identity["PreferredEmail"] +

<br>");

Response.Write("Passport ID: " + e.Identity.Name + "<br>");

}

}

Цей код відображує ім'я і адресу користувача, а також ідентифікаційні дані з його профілю служби Passport.

Підтвердження авторизації Passport і дані профілю зберігаються в п'яти окремих файлах cookie на комп'ютері користувача. Passport SDK вимагає видаляти ці cookie після закінчення роботи користувача з Web-додатком. Як це робиться, показано на прикладі наступного обробника події:

private| void| butSignOut_Click|(object| sender|, System|.EventArgs e)

{

// Завершити роботу, видаливши|віддаляти| файли cookie| служби

// Passport.

Response|.Cookies["MSPProf"].Expires = DateTime.Now;

Response|.Cookies["MSPAuth"].Expires = DateTime.Now;

Response|.Cookies["MSPSecAuth"].Expires = DateTime.Now;

Response|.Cookies["MSPProfC"].Expires = DateTime.Now;,

Response|.Cookies["MSPConsent"].Expires = DateTime.Now;

// Направити користувача на вхідну сторінку.

Response.Redirect("UserInfо.aspx");

}

Аутентифікація за допомогою служби Passport| надає ряд додаткових комерційних можливостей, у тому числі і захист дітей від небажаної інформації. Ці можливості описані в документації на Passport SDK.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow