Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Организация доступа / 20 сообщений из 20, страница 1 из 1
08.06.2014, 13:28
    #38664607
Sliva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Здравствуйте!
Встал вопрос по организации доступа.
Имеется: клиент-серверная архитектура (WinFirms + MS SQL Server 2012). Клиент как MDI приложение. Авторизация на sql сервере смешанная.
Необходимо: организовать доступ к MDI приложению помодульно.
Видеться 2 вариант:
1) При загрузке приложения проверять права пользователя и в соответствии с этим динамически подгружать необходимые модули/ссылки.
2) Загружать главную форму, а при вызове модуля, проверять, кто имеет права на вызов этого модуля.
Хотелось бы знать преимущества и недоставки данных способов.
А так же готов выслушать однополчан, кто сталкивались с этим вопросом и как его решили.
...
Рейтинг: 0 / 0
08.06.2014, 14:13
    #38664615
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Sliva,

Сразу предложение - как ключ в таблице модулей использовать полное имя - вместе с неймспейсом.

Так потом легче работать с рефлексией.
...
Рейтинг: 0 / 0
08.06.2014, 14:15
    #38664616
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Надо обговорить и минимизировать требования заказчика.

Чтобы при построении дерева доступа - не было пересечений.
Не давайте заказчику "расплыватья мысию по древу".
:-)
...
Рейтинг: 0 / 0
08.06.2014, 14:26
    #38664623
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Не забудьте про "бессилие всемогущего" -

Знаете вопрос - "Может ли всемогущий бог созадть камень, который сам не сможет поднять"?

Это не бессмыслица - а на самом деле вопрос о правах Суперадминистратора.

:-)
...
Рейтинг: 0 / 0
08.06.2014, 14:32
    #38664628
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Если бы я делал это сейчас,
Я бы сделал для пользователей дерево конфигурации, причем необходимо и аппликацию написать - которая эти деревья строит, добавляет и убирает пользователей и права.
Эта аппликация может быть отдельной, а может быть и спец-модулем, доступным для Суперадмина.

По имеющемуся дереву можно было бы загружать модули.
У модулей ведь еще должно быть два режима - для редактирования и только для чтения, и соответственно, "нету вам такого модуля"

Причем - есть вероятность, что заказчик захочет в одном и том же окне - разное для разных контролов....
...
Рейтинг: 0 / 0
08.06.2014, 15:53
    #38664652
Sliva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
D129,
не хотелось бы делать таблицу модулей, т.к. в поддержку выльется.
А как насчет ролей и групп в самом sql server, есть ли тут подводные камни?
...
Рейтинг: 0 / 0
08.06.2014, 17:22
    #38664670
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Slivaне хотелось бы делать таблицу модулей, т.к. в поддержку выльется.
чуда не будет, кто-то должен заниматься раздачей прав (ролями, группами и т д)

SlivaА как насчет ролей и групп в самом sql server, есть ли тут подводные камни?
ими можно подумать управлять не надо?
И как без таблицы связывать права на модули UI и роли в СУБД?
...
Рейтинг: 0 / 0
08.06.2014, 19:16
    #38664708
Sliva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Изопропил,

Я понимаю, что кто-то должен это делать. Хотелось бы эту работу свести к минимуму.
В идеале хотелось бы так: заводим нового пользователя в БД, назначаем ему права в виде роли/группы и все, юзер работает.
В Sql server может проверять права в соответствии с ролью.
Вариант с использованием таблички связей, тут, как вариант, авторизацию на сервере можно не проходит, т.к. эта табличка права и раздаст.
...
Рейтинг: 0 / 0
08.06.2014, 19:47
    #38664724
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
SlivaВариант с использованием таблички связей, тут, как вариант, авторизацию на сервере можно не проходит, т.к. эта табличка права и раздаст.
ну чтобы прочитать табличку авторизацию пройти придётся :)

напишите хранимую процедуру, которая по текущему пользователю(SUSER_SNAME) выдаст список доступных ему модулей(с доп параметрами возможно , например имя модуля для показа в меню итп)
(чё там внутри будет - дело десястое - свои роли и группы или от СУБД - для UI значения иметь не будет)
...
Рейтинг: 0 / 0
08.06.2014, 20:14
    #38664729
Sliva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Изопропил,
Если я правильно понял, это - юзер под public ролью + авторизация через табличку с модулями.
Вариант, если только юзер не знает что такое sqlcmd.exe
...
Рейтинг: 0 / 0
08.06.2014, 20:25
    #38664739
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Sliva,

авторизация юзера - полноценная SQL сервером,
через sqlcmd юзер точно так же получит список доступных модулей.

очень грубо
Код: sql
1.
2.
3.
4.
5.
create procedure dbo.getModulesForUser AS
select moduleName from dbo.ModuleACL where userName=SUSER_SNAME()
go
grant execute on dbo.getModulesForUser to public
go
...
Рейтинг: 0 / 0
08.06.2014, 20:27
    #38664740
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
SlivaВариант, если только юзер не знает что такое sqlcmd.exe
если юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо.
простые замки и двери - они ведь от честных людей
...
Рейтинг: 0 / 0
08.06.2014, 20:42
    #38664747
Sliva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Изопропилесли юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо.
роль приложений это проблему не решит?
...
Рейтинг: 0 / 0
08.06.2014, 20:51
    #38664752
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
SlivaИзопропилесли юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо.
роль приложений это проблему не решит?
в общем случае может не помочь даже RLS (Row Level Security)

Из стартового поста я понял, что ограничить права нужно на уровне интерфейса пользователя
о прямом доступе к БД речь не шла
...
Рейтинг: 0 / 0
08.06.2014, 21:29
    #38664772
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Sliva,
исполните трехзвенку(хоть сервер сбережете), и варитесь в вин формс не оглядываясь
...
Рейтинг: 0 / 0
09.06.2014, 12:07
    #38665184
Sliva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
Изопропил,
вы правильно поняли, на уровне интерфейса.
P.S. Прямой доступ - взгляд дальше.
...
Рейтинг: 0 / 0
10.06.2014, 08:34
    #38665868
LameUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
D129Sliva,

Сразу предложение - как ключ в таблице модулей использовать полное имя - вместе с неймспейсом.

Так потом легче работать с рефлексией.

Крайне не рекоммендую.
Любой ринейм имени типа или неймспейса - и приплыли, все настройки полетели.
Нужно продумать вариант, от синтаксических ошибок в названиях никто не застрахован, которые потом нужно исправлять.
...
Рейтинг: 0 / 0
10.06.2014, 08:54
    #38665876
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
LameUserЛюбой ринейм имени типа или неймспейса - и приплыли, все настройки полетели.
поэтому нужно вводить ещё один уровень - в списках доступа держать идентификаторы модулей,
и в отдельной таблице - привязку идентификаторов к именам классов и сборок

а вообще - вариантов туча, например атрибутами пометить классы модулей UI(в атрибутах - списки ролей и метаинформация для построения UI) при запуске проанализировать доступные сборки и получить список модулей и ролей, из базы получить просто список ролей пользователя (любым механизмом - хоть свою систему ролей использовать, хоть СУБД)
...
Рейтинг: 0 / 0
10.06.2014, 09:09
    #38665891
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
LameUserD129Sliva,

Сразу предложение - как ключ в таблице модулей использовать полное имя - вместе с неймспейсом.

Так потом легче работать с рефлексией.

Крайне не рекоммендую.
Любой ринейм имени типа или неймспейса - и приплыли, все настройки полетели.Использовать GUID в атрибутах...
LameUserНужно продумать вариант, от синтаксических ошибок в названиях никто не застрахован, которые потом нужно исправлять.
...
Рейтинг: 0 / 0
10.06.2014, 11:28
    #38666105
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация доступа
LameUserКрайне не рекоммендую.
Любой ринейм имени типа или неймспейса - и приплыли, все настройки полетели.
Нужно продумать вариант, от синтаксических ошибок в названиях никто не застрахован, которые потом нужно исправлять.
а я настаиваю.
:-)

Из опыта поддержки проэктов-

Изменение имени типа или неймспейса - только для исправления синтаксических ошибок - это от безделья бывает, в этом случае найдется время и для починки дерева доступа.

А если проходят изменения более глобальные - дописываются модули - то и настройки придется менять по любому.

Гораздо труднее поддерживать ключи, смысл которых вообще не ясен, и для принятия решения надо вообще дебагировать - чтобы узнать, кто там сейчас конкретно должен запуститься...
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Организация доступа / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]