Права пользователей в Firebird
Добавлено: 23 ноя 2007, 04:13
Вот есть вроде роли, но не очень удобно тем, что при подключении надо указывать роль. Какую? Возложить это на пользователя? Держать локальную таблицу по которой будет определяться какому пользователю какая роль соответствует? Тоже врод не дело...
Тем более сейчас (в файл-сервере) есть у меня таблица пользователей, в которой, в частности хранится еще и признак блокировки администратором... Да и нельзя под одним эккаунтом пускать двоих пользователей...
Как бы это грамотно и красиво решить? Пока в голову приходит вот что:
1. Юзер вводит логин и пароль, программа пытается с ними законнектиться к базе данных (без роли).
2. В случае неуспеха - это проблема коннекта или неверного логина/пароля. Тут ошибки обрабатываются без проблем.
3. В случае успешного входа, пользователь без указанной явно роли получает доступ только к одной таблице - таблице пользователей. Проверяется не работает ли уже такой пользователь в системе, и не заблокирован ли он администратором? Если что-то не так, пользователь получает сообщение и идёт лесом...
4. Если всё нормально, то из этой же таблицы считывается его роль, происходит дисконнект от сервера, и повторный, уже "правильный" коннект с указанием роли.
Или есть способы проще и красивее?
Тем более сейчас (в файл-сервере) есть у меня таблица пользователей, в которой, в частности хранится еще и признак блокировки администратором... Да и нельзя под одним эккаунтом пускать двоих пользователей...
Как бы это грамотно и красиво решить? Пока в голову приходит вот что:
1. Юзер вводит логин и пароль, программа пытается с ними законнектиться к базе данных (без роли).
2. В случае неуспеха - это проблема коннекта или неверного логина/пароля. Тут ошибки обрабатываются без проблем.
3. В случае успешного входа, пользователь без указанной явно роли получает доступ только к одной таблице - таблице пользователей. Проверяется не работает ли уже такой пользователь в системе, и не заблокирован ли он администратором? Если что-то не так, пользователь получает сообщение и идёт лесом...
4. Если всё нормально, то из этой же таблицы считывается его роль, происходит дисконнект от сервера, и повторный, уже "правильный" коннект с указанием роли.
Или есть способы проще и красивее?