Sliva
Дата: 08.06.2014 13:28:39
Здравствуйте!
Встал вопрос по организации доступа.
Имеется: клиент-серверная архитектура (WinFirms + MS SQL Server 2012). Клиент как MDI приложение. Авторизация на sql сервере смешанная.
Необходимо: организовать доступ к MDI приложению помодульно.
Видеться 2 вариант:
1) При загрузке приложения проверять права пользователя и в соответствии с этим динамически подгружать необходимые модули/ссылки.
2) Загружать главную форму, а при вызове модуля, проверять, кто имеет права на вызов этого модуля.
Хотелось бы знать преимущества и недоставки данных способов.
А так же готов выслушать однополчан, кто сталкивались с этим вопросом и как его решили.
D129
Дата: 08.06.2014 14:13:33
Sliva,
Сразу предложение - как ключ в таблице модулей использовать полное имя - вместе с неймспейсом.
Так потом легче работать с рефлексией.
D129
Дата: 08.06.2014 14:15:14
Надо обговорить и минимизировать требования заказчика.
Чтобы при построении дерева доступа - не было пересечений.
Не давайте заказчику "расплыватья мысию по древу".
:-)
D129
Дата: 08.06.2014 14:26:46
Не забудьте про "бессилие всемогущего" -
Знаете вопрос - "Может ли всемогущий бог созадть камень, который сам не сможет поднять"?
Это не бессмыслица - а на самом деле вопрос о правах Суперадминистратора.
:-)
D129
Дата: 08.06.2014 14:32:06
Если бы я делал это сейчас,
Я бы сделал для пользователей дерево конфигурации, причем необходимо и аппликацию написать - которая эти деревья строит, добавляет и убирает пользователей и права.
Эта аппликация может быть отдельной, а может быть и спец-модулем, доступным для Суперадмина.
По имеющемуся дереву можно было бы загружать модули.
У модулей ведь еще должно быть два режима - для редактирования и только для чтения, и соответственно, "нету вам такого модуля"
Причем - есть вероятность, что заказчик захочет в одном и том же окне - разное для разных контролов....
Sliva
Дата: 08.06.2014 15:53:58
D129,
не хотелось бы делать таблицу модулей, т.к. в поддержку выльется.
А как насчет ролей и групп в самом sql server, есть ли тут подводные камни?
Изопропил
Дата: 08.06.2014 17:22:16
Sliva |
---|
не хотелось бы делать таблицу модулей, т.к. в поддержку выльется. |
чуда не будет, кто-то должен заниматься раздачей прав (ролями, группами и т д)
Sliva |
---|
А как насчет ролей и групп в самом sql server, есть ли тут подводные камни? |
ими можно подумать управлять не надо?
И как без таблицы связывать права на модули UI и роли в СУБД?
Sliva
Дата: 08.06.2014 19:16:16
Изопропил,
Я понимаю, что кто-то должен это делать. Хотелось бы эту работу свести к минимуму.
В идеале хотелось бы так: заводим нового пользователя в БД, назначаем ему права в виде роли/группы и все, юзер работает.
В Sql server может проверять права в соответствии с ролью.
Вариант с использованием таблички связей, тут, как вариант, авторизацию на сервере можно не проходит, т.к. эта табличка права и раздаст.
Изопропил
Дата: 08.06.2014 19:47:38
Sliva |
---|
Вариант с использованием таблички связей, тут, как вариант, авторизацию на сервере можно не проходит, т.к. эта табличка права и раздаст. |
ну чтобы прочитать табличку авторизацию пройти придётся :)
напишите хранимую процедуру, которая по текущему пользователю(SUSER_SNAME) выдаст список доступных ему модулей(с доп параметрами возможно , например имя модуля для показа в меню итп)
(чё там внутри будет - дело десястое - свои роли и группы или от СУБД - для UI значения иметь не будет)
Sliva
Дата: 08.06.2014 20:14:05
Изопропил,
Если я правильно понял, это - юзер под public ролью + авторизация через табличку с модулями.
Вариант, если только юзер не знает что такое sqlcmd.exe