Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Аутентификация [D6, Win2k]


explorer ©   (2002-06-05 10:42:00) 

Мастера!
Мне надо в приложении сделать аутентификацию пользователей.
Чтобы разграничить права.
Посоветуйте, как это лучше воплотить?
Желательно пример или ссылочку.


Explorer   (2002-06-07 06:37:00) [1]

Всем, большое спасибо!
Поэкспериментирую!


Nikolay M.   (2002-06-05 15:53:00) [2]

А у тебя пользователь может вводить логин\пароль к базе?! Зачем? Если используешь обычные дельфевые компоненты, то в TDatabase прописываешь логин-пароль к БД и LoginPromt ставишь в False, а уже с пользователя запрашиваешь его персональный логин, который используется для входа в твою программу, не имеющий ничего общего с коннектом к БД. А вот уже эти логины храни под MSSQL, например, в формате:
CREATE TABLE User (ID INTEGER, Login CHAR(50), PasswordHash CHAR(50), Grant CHAR(50))
и при запуске проги спрашивай с юзера его логин с паролем и проверяй наличие пары логин/хеш_функция(пароль) в этой табличке. ИМХО, не есть правильно на каждого пользователя программы создавать пользователя БД. Правда, пароль к БД тогда становится менее защищенным: часто его можно вытащить из екзешника простым текстовым редактором, находя в нем слова типа "login", "pass", "password"...


Кулюкин Олег   (2002-06-05 15:50:00) [3]

SUSER_NAME возвращает имя пользователя MS SQL.
Еще есть хорошая функция SUSER_ID.

Я не заморачивался с проверкой паролей, использовал аутентификацию самого MS SQL, а в своей таблице хранил права пользователей (пользователя определял по SUSER_ID).


Игорь Шевченко   (2002-06-05 15:33:00) [4]

Может, у MSSQL есть какая-то функция, которая возвращает текущего подключенного пользователя. Спросите на форуме по базам данных здесь же


Explorer   (2002-06-05 15:31:00) [5]

Ну да, это если в настройках БД поставить аутентификацию средствами Windows. Просто мен сисадмин сказал, чтобы пользователи использовали аутентификацию БД. А тогда мне прийдется делать две авторизации одна БД, вторая, как советует Nikolay M.
Или можно как-нибудь по-другому все это сделать?


Игорь Шевченко   (2002-06-05 15:09:00) [6]

MSSQL, насколько мне известно, позволяет подключаться к базе с текущим пользователем, вошедшим в Windows


Explorer   (2002-06-05 15:05:00) [7]

>Nikolay M. ©
Использую MSSQL.
Можно, как нибудь, когда происходит конект к базе, из окна авторизации БД извлечь логин пользователя?


Nikolay M.   (2002-06-05 13:51:00) [8]

1) для начала завести список логинов пользователей с паролями, причем хранить не сами пароли, а их хеши и хранить этот список в недоступном юзерам месте, например в БД, в которой существует нормально сделанное разграничение доступа к данным (не Парадокс, конечно :)) или в хорошо закодированном файле (хотя при желании все вскрывается)
2) я для каждого пользователя хранил строку типа "YNNYYNY" - соответственно разрешено право (Yes) на n-е действие или запрещено (No).
3) При запуске программы запросить логин/пароль, сравнить хеш введенного пароля с хешем из списка. Ну, а при показе формы уже считать строчку "YNNYYNY" и разрешить/запретить кнопки в зависимости от данных прав - дело техники.

В принципе просто как вариант, у меня это работает, не жалуюсь.


Игорь Шевченко   (2002-06-05 10:46:00) [9]

Положиться на Windows :-)


Наверх

Титульная страница Поиск, карта сайта Написать письмо