Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.20;
Скачать: CL | DM;

Вниз

Аутентификация   Найти похожие ветки 

 
explorer ©   (2002-06-05 10:42) [0]

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


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

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


 
Nikolay M. ©   (2002-06-05 13:51) [2]

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

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


 
Explorer ©   (2002-06-05 15:05) [3]

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


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

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


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

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


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

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


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

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

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


 
Nikolay M. ©   (2002-06-05 15:53) [8]

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


 
Explorer ©   (2002-06-07 06:37) [9]

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



Страницы: 1 вся ветка

Текущий архив: 2002.06.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
3-64960
jonik pegas
2002-05-28 09:14
2002.06.20
Изменения в БД. Как проще отловить


1-65053
nitro313
2002-06-09 03:34
2002.06.20
Как динамически создавать таблицы и dbgrid ?


3-64911
int64
2002-05-24 08:41
2002.06.20
Альтернатива post_event.


1-65107
Jen_Bond
2002-06-07 01:32
2002.06.20
Как можно узнать....


14-65220
Evgeny
2002-05-17 12:41
2002.06.20
Даже потрепаться модератор и то не дает