Вот есть вроде роли, но не очень удобно тем, что при подключении надо указывать роль. Какую? Возложить это на пользователя? Держать локальную таблицу по которой будет определяться какому пользователю какая роль соответствует? Тоже врод не дело...
Тем более сейчас (в файл-сервере) есть у меня таблица пользователей, в которой, в частности хранится еще и признак блокировки администратором... Да и нельзя под одним эккаунтом пускать двоих пользователей...
Как бы это грамотно и красиво решить? Пока в голову приходит вот что:
1. Юзер вводит логин и пароль, программа пытается с ними законнектиться к базе данных (без роли).
2. В случае неуспеха - это проблема коннекта или неверного логина/пароля. Тут ошибки обрабатываются без проблем.
3. В случае успешного входа, пользователь без указанной явно роли получает доступ только к одной таблице - таблице пользователей. Проверяется не работает ли уже такой пользователь в системе, и не заблокирован ли он администратором? Если что-то не так, пользователь получает сообщение и идёт лесом...
4. Если всё нормально, то из этой же таблицы считывается его роль, происходит дисконнект от сервера, и повторный, уже "правильный" коннект с указанием роли.
Или есть способы проще и красивее?
Права пользователей в Firebird
-
Kotъ-Begemotъ
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
-
Kotъ-Begemotъ
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
Да у меня тоже секурность особо не нужна, скорее внутренние мелочи - не допустить входа под одинаковым логином, проверить внутренние "права" пользователя, посмотреть не был ли он забанен админом, и так далее... да и внутри проги активно используются глобальные переменные - UserID, UserLoginNane и так далее... Которые берутся из этой самой таблицы пользователей...Dimitry Sibiryakov писал(а):У меня первоначальный коннект происходил под спецлогином, которому доступна только таблица пользователей. Заодно пользователю выдавался список пользователей на выбор как в 1С. Несекурно, конечно, ну да прога была для унутреннего пользования.