Форум: "Основная";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
ВнизАутентификация Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c