Шаг 20.
Компоненты библиотеки RX.
Вкладка RX DBAware. Компонент TDBSecurity

    На этом шаге мы рассмотрим компонент TDBSecurity.

    Компонент предоставляет два диалога, которые являются общеупотребимыми для приложений, работающих с базами данных. Первый - диалог входа в программу с регистрацией пользователя (проверкой пароля, прав и т.д.) и открытием БД. Второй - диалог смены пароля пользователя. Компонент также может заблокировать ваше приложение, минимизировав его, и потребовать от пользователя пароль для его разблокировки.

Компонент обеспечивает три диалога:

    Установите свойства Database, UsersTableName и LoginNameField, а также напишите обработку события OnCheckUser (при необходимости) для появления диалога регистрации при загрузке вашего приложения. Если свойства UsersTableName и LoginNameField не заданы, то в таком виде компонент можно использовать при соединении с SQL-сервером, который сам обеспечивает проверку прав пользователя.

    Вызовите метод ChangePassword для предоставления пользователю возможности сменить его пароль.

Таблица 1. Свойства компонента TDBSecurity
Свойство Описание
property UsersTableName: TFileName; Задает имя таблицы в БД Database, которая содержит информацию о пользователях. Поле LoginNameField в этой таблице должно содержать входные имена или идентификаторы пользователей, по которым их можно идентифицировать.
property LoginNameField: string; Определяет имя поля в таблице с именем UsersTableName из БД Database, используемое для идентификации пользователя по введенному имени.
property OnCheckUser: TCheckUserEvent; Событие для проверки прав пользователя. К моменту вызова этого события пользователь уже найден в таблице UsersTableName по введенному им имени и полю LoginNameField, то есть таблица UsersTable позиционирована на нужную запись. Остается прочитать нужные поля и сделать вывод о результатах проверки, не забыв вернуть нужное логическое значение. Можно также сохранить где-нибудь необходимую информацию о текущем пользователе. Событие вызывается и в том случае, если таблица UsersTableName не задана. В обработчике события OnCheckUser вы можете использовать значение свойства LoggedUser, которое содержит имя пользователя, введенное им в диалоге регистрации.
function ChangePassword: Boolean; Вызывает диалог "Смена пароля". Важно правильно обработать событие OnChangePassword. Вы должны самостоятельно произвести в том событии все необходимые действия для смены пароля пользователя в базе данных. Например, вы можете выполнить соответствующий SQL-оператор или сделать необходимые изменения в таблицах БД.
property OnChangePassword: TChangePasswordEvent; Событие для смены пароля. К этому моменту проверено, что оба новых пароля совпадают, а UsersTable позиционирована на запись с текущим пользователем. Нужно проверить, что введенный старый пароль валиден и произвести изменения в таблице.
property Database: TDatabase; Указывает на компонент TDatabase, задающий БД, который, возможно, содержит таблицу UsersTableName с именами, паролями, правами и другой необходимой информацией о пользователях.
procedure Lock; Метод предназначен для "блокирования" приложения. При вызове метода Lock приложение минимизируется и при попытке восстановления его размеров выводит диалог ввода пароля. Вы можете обработать введенный пользователем пароль в событии OnUnlock.
property OnUnlock: TCheckUnlockEvent; Событие вызывается для проверки введенного пользователем пароля при разблокировании приложения, предварительно заблокированного методом Lock. Вы должны вернуть False из вашего обработчика события OnUnlock для того, чтобы запретить разблокирование приложения.
type TCheckUnlockEvent = function(const Password: string): Boolean of object; Тип определен для события OnUnlock компонента TDBSecurity.
type TChangePasswordEvent = function(UsersTable: TTable; const OldPassword, NewPassword: string): Boolean of object; Тип определен для события OnChangePassword компонента TDBSecurity.

    На следующем шаге мы рассмотрим компонент TBDEItems.




Предыдущий шаг Содержание Следующий шаг