Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
54
Добавлен:
10.05.2014
Размер:
120.83 Кб
Скачать

Аутентификация пользователя

Предусмотреть в системе возможность работы многих пользователей. Каждый пользователь должен иметь входное имя (login) и пароль. Аутентификацию пользователей можно организовать средствами самой СУБД или средствами клиентского приложения.

В первом случае придется на сервере СУБД регистрировать всех пользователей с их паролями, определять их роли, при этом пароль будет передаваться по сети в незашифрованном виде. Во втором случае соединение с СУБД устанавливается в соответствии с правами администратора базы данных (используется аутентификация Windows), а в базе данных создается дополнительная таблица, содержащая login’ы пользователей, их зашифрованные пароли и роли. При входе в систему пользователь вводит свой login и незашифрованный пароль. На клиенте пароль шифруется, и на сервер передается запрос, содержащий зашифрованный пароль. Затем на клиенте анализируется результат запроса, и выполняются необходимые действия.

Вариант шифрования пароля

Используется криптографический алгоритм шифрования из Studio.net, для которого необходимо подключить следующие пространства имен:

using System.Security.Cryptography; – для метода шифрования,

using System.Text; – для получения массива байтов.

Необходимые данные:

  • объект типа string для ввода текстового пароля,

  • массив элементов типа byte для преобразования строки в массив байтов,

  • массив элементов типа byte для получения зашифрованного пароля в виде массива байтов,

  • объект типа string для получения строкового представления зашифрованного пароля.

Порядок действий:

  1. Ввести пароль (считать из текстовой переменной).

  2. Преобразовать строку в массив байтов:

byte [] a1 = ASCIIEncoding.ASCII.GetBytes(s1);

  1. Получить Hash-преобразование для массива байтов:

byte [] a2 = new MD5CryptoServiceProvider().ComputeHash(a1);

  1. Преобразовать полученный массив байтов в символьную строку для передачи в базу данных:

string s2 = "";

for(int j = 0; j < a2.Length; ++j)

s2 = s2 + a2[j].ToString("X2");

Здесь X – означает, что преобразуется как 16-ричный код; цифры A, B, … , F представлены в верхнем регистре;

2 – означает, что один байт, содержащий некоторый код, записывается в два байта (один байт содержит две 16-ричные цифры, каждая цифра в символьном представлении записывается в одно байте).

Выполнение хранимых процедур Подготовка

В .NET Framework можно выделить две части:

  • OleDb Manager Provider, обеспечивающий работу с любым источником данных, доступным через OleDb провайдер,

  • SqlClient Manager Provider, обеспечивающий работу с данными, хранящимися в MS SQL Server (версии 7 и выше).

Для использования SqlClient Manager Provider в основной файл следует добавить:

using System.Data.SqlClient;

Для выполнения хранимых процедур используются объекты SqlConnection, SqlCommand и SqlParameter; их определение и реализация в ADO.NET отличаются от ADO.

Объекты типа SqlConnection и SqlCommand целесообразно объявить в области определения класса:

<тип_видимости> SqlConnection con;

< тип_видимости > SqlCommand cmd;

Всю необходимую подготовку объектов целесообразно разместить в конструкторе формы, однако открытие и закрытие соединения с сервером базы данных, в соответствии с методологией ADO.NET, следует выполнять при каждой операции с базой данных; здесь же формируется объект SqlCommand и создаются необходимые параметры.