Організація багатокористувацького доступу

 

Організація багатокористувацького доступу

 

         Інколи АРМ можуть користуватися більше одного співробітника, тому потрібно організовувати багатокористувацький доступ. Доступ може розподілюватися на рівні додатку, чи на рівні самої СКБД.

 

1.     Задання прав користувачам на рівні СКБД.

Для цього потрібно завантажити утиліту mySQL Administrator, ввести логін та пароль головного адміністратора, перейти на панелі зліва пункт User Administration. Після чого зправа з’явиться кнопка Add new user, натискаємо її, вводимо всі необхідні дані користувача. Переходимо на вкладку Schema Privileges де і задаємомо рівні доступу користувача.

Після чого в вікні де ви вводите пароль та логін користувача ви можете вводити реквізити нового користувача і, якщо, ви наділили його правами доступу до бази, СКБД дасть доступ.

 

Для того щоб замінити чи не відображати стандартне вікно входу до БД, або ж другими словами забезпечити автоматичний вхід до системи. Необхідно на компоненті TDatabase, яка і виводить вікно підключення клікнути лівою клавішею миші два рази. Отримаємо вікно параметрів під’єднання до БД. Вводимо в полі Name назву БД, в полі Alias Name вводимо назву аліасу ODBC та натискаємо на кнопку Deaults знімаємо відмітку Login Prompt, та у вікні Parameter Overrides

 

DATABASE NAME= [ім’я бази]

USER NAME= [ім’я користувача]

ODBC DSN= [ім’я алісу ODBC]

PASSWORD= [пароль користувача]

 

Після чого якщо властивість Connect перевести в True система автоматично підключиться без ніяких запитів.

Якшо робити це в програмі код буде мати вигляд:

 

DataBase1.AliasName:='[ім’я алісу ODBC]';

DataBase1.DatabaseName:=' ім’я бази ';

DataBase1.LoginPrompt:=False;

DataBase1.Params.Add('DATABASE NAME= [ім’я бази]');

DataBase1.Params.Add('USER NAME= [ім’я користувача]');

DataBase1.Params.Add('ODBC DSN= [ім’я алісу ODBC]');

DataBase1.Params.Add('PASSWORD= [пароль користувача]');

DataBase1.Connect:=True;

 

2.     Обмеження доступу на рівні додатку

Ми, наприклад, можемо мати тільки одного користувача на рівні СКБД, і працювати під його реквізитами, на декількох додатках одночасно. А обмежитись вікном, яке вспливає при запуску, питає ім’я та пароль, зрівнює реквізити користувача з списком користувачів а потім, якщо введені реквізити коректні – продовжує далі, якщо ж ні – просить ввести ще раз.

Наприклад у нас в робочому каталозі є файл users.ini наступного змісту:

 

[Вася]

Password="123"

 

[Петя]

Password="qwerty"

 

         Тоді аутентифікація буде проводитись наступним чином:

                   а) див. п.1. прописуєте реквізити доступу до БД

                   б) модифікуєте програмний код таким чином

 

         Оголошуєте в розділі Uses модуль IniFiles. Оголошуєте змінну, наприклад, ini типу TIniFile. При створенні вікна вводу імені та паролю користувача (обробник OnCreate) вставляєте код:

        

                  ini:=TIniFile.Create('users.ini');

        

В обробнику натискання на клавішу "Вхід" потрібно вставити такі радки коду:

        

         IF ini.ReadString(Edit1.Text,'Password','n/a')=Edit2.Text

then

  // Продовжити завантаження додатку

else

                   // Перепитати пароль

Примітка:

1.             З вищеописаного видно, що неможе бути користувачів з однаковими іменами.

2.             Ім’я користувача не чутливе до реєстру.

3.             При вводі неіснуючого імені користувача і паролю 'n/a' система дасть доступ.

4.             Edit1.Text – ім’я користувача, а Edit2.Text – його пароль.

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