Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛБ(ПРИС)_Файл-сервер_2016.doc
Скачиваний:
5
Добавлен:
17.06.2023
Размер:
5.49 Mб
Скачать
  1. Разграничение прав доступа для различных пользователей

Разграничение прав доступа подразумевает доступность различных функций ИС тем или иным пользователям. Идентификация и аутентификация пользователей производится по его имени («логин») и паролю.

Для организации разграничения прав доступа следует создать новую таблицу PWDTBL в базе данных, которая содержит три поля: USER_ID (код пользователя) USER (Имя пользователя), PASS (Пароль).

Рисунок 36 – Таблица пользователей

Далее следует создать новую форму. Форму MainForm необходимо в опциях проекта (Project → Options… или нажать Shift + Ctrl + F11), на вкладке Forms переместить из списка автоматически создаваемых в список доступных. Получится, что автоматически создаются только 2 формы DM и форма входа.

Добавим модуль данных ещё один компонент ADOQuery с вкладки ADO и компонент DataSource с вкладки Data Access. В свойстве DataSet компонента DataSource1 из выпадающего списка выберем ADOQuery1, в свойстве Connection компонента ADOQuery1 из выпадающего списка выберем ADOConnection1. В свойство SQL компонента ADOQuery1 внесём: SELECT * FROM PWDTBL.

Установим свойство формы BorderStyle в значение bsNone, стобы у формы не было границ.

Поместим на форму компоненты DBLookupComboBox , Edit (ввести в свойство PasswordChar, например,*, чтобы при вводе пароля вводимые знаки были скрыты этим символом) и две кнопки BitBtn или просто Button, по вкусу. В результате должно получиться примерно то, что показано на рисунке 37. Установим свойства компонента DBLookupComboBox1:

  • KeyField: USER_ID

  • ListSource: DM.DataSource1

  • ListField: USER

Рисунок 37 – Форма входа

По событию показа формы onShow необходимо подключится к базе, считав из неё список пользователей с помощью запроса в ADOQuery1. Таким образом, список пользователей отобразится в DBLookupComboBox1.

Процедура сверки пароля осуществляется следующим образом: после выбора пользователя из выпадающего списка DBLookupComboBox1 осуществляется запрос на выборку из таблицы PWDTBL записи с указанным пользователем. Далее сохраняется пароль указанный в выбранной записи. После ввода и подтверждения (кнопка «Войти») пароля введённый пароль сравнивается с сохранённым. Если пароль совпадает, то устанавливаются ограничения в виде деактивации пунктов главного меню в соответствии с выбранным пользователем. Если пароль не совпадает, то нужно выдать соответствующее сообщение.

Организация смены пароля

Создадим новую форму PassChange для организации смены пароля. В опциях проекта (Project → Options… или нажать Shift + Ctrl + F11), на вкладке Forms ее необходимо переместить из списка автоматически создаваемых в список доступных.

Поместим на форму компоненты DBLookupComboBox , Edit1, Edit2, Edit3 (ввести в свойство PasswordChar, например,*, чтобы при вводе пароля вводимые знаки были скрыты этим символом) и две кнопки BitBtn . В результате должно получиться примерно то, что показано на рисунке 38. Установим свойства компонента DBLookupComboBox1:

  • KeyField: USER_ID

  • ListSource: DM.DataSource1

  • ListField: USER

Рисунок 38 – смена пароля

При выборе пункта меню “Смена пароля” на главной форме необходимо прописать следующее (при этом добавить модуль Unit_PassChange в раздел Uses).

procedure TMainForm.ChPassNClick(Sender: TObject); // Пункт меню "Смена пароля"

begin

PassChange:=TPassChange.Create(self);

PassChange.ShowModal;

end;

По событию показа формы onShow необходимо подключится к базе, считав из неё список пользователей с помощью запроса в ADOQuery1. Таким образом, список пользователей отобразится в DBLookupComboBox1.

Процедура сверки пароля осуществляется таким же образом, как и при входе. Плюс к этому еще происходит процедура сверки ввода нового пароля и его повтора.