|
Организация доступа
|
|||
---|---|---|---|
#18+
Здравствуйте! Встал вопрос по организации доступа. Имеется: клиент-серверная архитектура (WinFirms + MS SQL Server 2012). Клиент как MDI приложение. Авторизация на sql сервере смешанная. Необходимо: организовать доступ к MDI приложению помодульно. Видеться 2 вариант: 1) При загрузке приложения проверять права пользователя и в соответствии с этим динамически подгружать необходимые модули/ссылки. 2) Загружать главную форму, а при вызове модуля, проверять, кто имеет права на вызов этого модуля. Хотелось бы знать преимущества и недоставки данных способов. А так же готов выслушать однополчан, кто сталкивались с этим вопросом и как его решили. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 13:28 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Sliva, Сразу предложение - как ключ в таблице модулей использовать полное имя - вместе с неймспейсом. Так потом легче работать с рефлексией. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 14:13 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Надо обговорить и минимизировать требования заказчика. Чтобы при построении дерева доступа - не было пересечений. Не давайте заказчику "расплыватья мысию по древу". :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 14:15 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Не забудьте про "бессилие всемогущего" - Знаете вопрос - "Может ли всемогущий бог созадть камень, который сам не сможет поднять"? Это не бессмыслица - а на самом деле вопрос о правах Суперадминистратора. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 14:26 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Если бы я делал это сейчас, Я бы сделал для пользователей дерево конфигурации, причем необходимо и аппликацию написать - которая эти деревья строит, добавляет и убирает пользователей и права. Эта аппликация может быть отдельной, а может быть и спец-модулем, доступным для Суперадмина. По имеющемуся дереву можно было бы загружать модули. У модулей ведь еще должно быть два режима - для редактирования и только для чтения, и соответственно, "нету вам такого модуля" Причем - есть вероятность, что заказчик захочет в одном и том же окне - разное для разных контролов.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 14:32 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
D129, не хотелось бы делать таблицу модулей, т.к. в поддержку выльется. А как насчет ролей и групп в самом sql server, есть ли тут подводные камни? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 15:53 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Slivaне хотелось бы делать таблицу модулей, т.к. в поддержку выльется. чуда не будет, кто-то должен заниматься раздачей прав (ролями, группами и т д) SlivaА как насчет ролей и групп в самом sql server, есть ли тут подводные камни? ими можно подумать управлять не надо? И как без таблицы связывать права на модули UI и роли в СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 17:22 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Изопропил, Я понимаю, что кто-то должен это делать. Хотелось бы эту работу свести к минимуму. В идеале хотелось бы так: заводим нового пользователя в БД, назначаем ему права в виде роли/группы и все, юзер работает. В Sql server может проверять права в соответствии с ролью. Вариант с использованием таблички связей, тут, как вариант, авторизацию на сервере можно не проходит, т.к. эта табличка права и раздаст. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 19:16 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
SlivaВариант с использованием таблички связей, тут, как вариант, авторизацию на сервере можно не проходит, т.к. эта табличка права и раздаст. ну чтобы прочитать табличку авторизацию пройти придётся :) напишите хранимую процедуру, которая по текущему пользователю(SUSER_SNAME) выдаст список доступных ему модулей(с доп параметрами возможно , например имя модуля для показа в меню итп) (чё там внутри будет - дело десястое - свои роли и группы или от СУБД - для UI значения иметь не будет) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 19:47 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Изопропил, Если я правильно понял, это - юзер под public ролью + авторизация через табличку с модулями. Вариант, если только юзер не знает что такое sqlcmd.exe ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 20:14 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Sliva, авторизация юзера - полноценная SQL сервером, через sqlcmd юзер точно так же получит список доступных модулей. очень грубо Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 20:25 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
SlivaВариант, если только юзер не знает что такое sqlcmd.exe если юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо. простые замки и двери - они ведь от честных людей ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 20:27 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Изопропилесли юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо. роль приложений это проблему не решит? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 20:42 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
SlivaИзопропилесли юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо. роль приложений это проблему не решит? в общем случае может не помочь даже RLS (Row Level Security) Из стартового поста я понял, что ограничить права нужно на уровне интерфейса пользователя о прямом доступе к БД речь не шла ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 20:51 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Sliva, исполните трехзвенку(хоть сервер сбережете), и варитесь в вин формс не оглядываясь ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2014, 21:29 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
Изопропил, вы правильно поняли, на уровне интерфейса. P.S. Прямой доступ - взгляд дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2014, 12:07 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
D129Sliva, Сразу предложение - как ключ в таблице модулей использовать полное имя - вместе с неймспейсом. Так потом легче работать с рефлексией. Крайне не рекоммендую. Любой ринейм имени типа или неймспейса - и приплыли, все настройки полетели. Нужно продумать вариант, от синтаксических ошибок в названиях никто не застрахован, которые потом нужно исправлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 08:34 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
LameUserЛюбой ринейм имени типа или неймспейса - и приплыли, все настройки полетели. поэтому нужно вводить ещё один уровень - в списках доступа держать идентификаторы модулей, и в отдельной таблице - привязку идентификаторов к именам классов и сборок а вообще - вариантов туча, например атрибутами пометить классы модулей UI(в атрибутах - списки ролей и метаинформация для построения UI) при запуске проанализировать доступные сборки и получить список модулей и ролей, из базы получить просто список ролей пользователя (любым механизмом - хоть свою систему ролей использовать, хоть СУБД) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 08:54 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
LameUserD129Sliva, Сразу предложение - как ключ в таблице модулей использовать полное имя - вместе с неймспейсом. Так потом легче работать с рефлексией. Крайне не рекоммендую. Любой ринейм имени типа или неймспейса - и приплыли, все настройки полетели.Использовать GUID в атрибутах... LameUserНужно продумать вариант, от синтаксических ошибок в названиях никто не застрахован, которые потом нужно исправлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 09:09 |
|
Организация доступа
|
|||
---|---|---|---|
#18+
LameUserКрайне не рекоммендую. Любой ринейм имени типа или неймспейса - и приплыли, все настройки полетели. Нужно продумать вариант, от синтаксических ошибок в названиях никто не застрахован, которые потом нужно исправлять. а я настаиваю. :-) Из опыта поддержки проэктов- Изменение имени типа или неймспейса - только для исправления синтаксических ошибок - это от безделья бывает, в этом случае найдется время и для починки дерева доступа. А если проходят изменения более глобальные - дописываются модули - то и настройки придется менять по любому. Гораздо труднее поддерживать ключи, смысл которых вообще не ясен, и для принятия решения надо вообще дебагировать - чтобы узнать, кто там сейчас конкретно должен запуститься... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 11:28 |
|
|
start [/forum/topic.php?fid=20&msg=38664628&tid=1402828]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 142ms |
0 / 0 |