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

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

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

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

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

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

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

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

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

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

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

напишите хранимую процедуру, которая по текущему пользователю(SUSER_SNAME) выдаст список доступных ему модулей(с доп параметрами возможно , например имя модуля для показа в меню итп)
(чё там внутри будет - дело десястое - свои роли и группы или от СУБД - для UI значения иметь не будет)
...
Рейтинг: 0 / 0
Организация доступа
    #38664729
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Если я правильно понял, это - юзер под public ролью + авторизация через табличку с модулями.
Вариант, если только юзер не знает что такое sqlcmd.exe
...
Рейтинг: 0 / 0
Организация доступа
    #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
Организация доступа
    #38664740
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaВариант, если только юзер не знает что такое sqlcmd.exe
если юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо.
простые замки и двери - они ведь от честных людей
...
Рейтинг: 0 / 0
Организация доступа
    #38664747
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилесли юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо.
роль приложений это проблему не решит?
...
Рейтинг: 0 / 0
Организация доступа
    #38664752
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaИзопропилесли юзер знает, что такое sqlcmd (или просто экселем владеет) - дело плохо.
роль приложений это проблему не решит?
в общем случае может не помочь даже RLS (Row Level Security)

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

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

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

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

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

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

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

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

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

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

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

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


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