powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Идентификация методов при назначении прав
4 сообщений из 4, страница 1 из 1
Идентификация методов при назначении прав
    #39105069
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сделать права на действия. По идее действия это функции. Возникает вопрос как лучше эти функции идентифицировать. Можно просто в каждой функции объявить переменную со строкой идентификатором
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
void func()
{
string right = "func";

if (User.HaveRights(right))
{

}
}


А в таблице будет строка (для примера)
Код: c#
1.
2.
id name access
1 func 1



Или лучше както по другому?
...
Рейтинг: 0 / 0
Идентификация методов при назначении прав
    #39105156
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
FatherSql,

id точно не нужен, так как name уникально.


а вообще раздели функции и действия. если действия в субд - то субд и проверять должна (а клиентская часть только запрашивать, что бы кнопку неактивную сделать или вообще спрятать что-то).
...
Рейтинг: 0 / 0
Идентификация методов при назначении прав
    #39107083
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FatherSqlНужно сделать права на действия. По идее действия это функции. Возникает вопрос как лучше эти функции идентифицировать. Можно просто в каждой функции объявить переменную со строкой идентификатором
Нет, это точно будет плохо. Потому что действие - то, на что назначаются права - это предмет бизнес-логики, внешнего мира, а функция - предмет внутренней реализации. Жёстко завязывать их - означает организовывать потенциальную архитектурную проблему, ну всё равно как пришивать подол рубашки к штанам. Потом неизбежно окажется, что в 5% случаев таки надо в func2() проверять права на func1(), и всё станет совсем весело.

Как идентифицировать... в принципе, зависит от того, во что эти права выльются. Приведу пример с одной из моих работ: когда пользователь жмёт на кнопку, условно, "оформить отгрузку", проверяется факт оплаты. Есть стопроцентная оплата - оформляется. Нет - пользователь проверяется на наличие привилегии "оформить не оплаченную отгрузку", если таковой нет - посылается. Если таковая есть, считается сумма отгружаемых товаров. Если она меньше 10.000 рублей - оформляется. Если больше - проверяется на наличие привилегии "оформить не оплаченную отгрузку более чем на 10.000 рублей". Там возможны три варианта: нет привилегии - посылается, есть привилегия - оформляется, есть привилегия с пометкой "только с разрешения начальника" - начальнику автоматически посылается копия экрана и прочая справочная информация, оформление посылается. Если начальник смотрит на присланное и жмёт кнопку "разрешить", сотруднику приходит извещение об этом, и в этом случае, когда он снова нажмёт кнопку "Оформить" и снова дойдёт до проверки привилегии, проверка будет пройдена и отгрузка будет оформлена.

К чему я это... к тому, что понятным для человека идентификатором привилегии будет только длинная фраза на русском. Применять её как идентификатор в коде - крайне некузяво. Поэтому нужна схема id-value, то есть в коде будет нечто типа

Код: sql
1.
 if (User.HaveRight(12345))

,

в таблице

Код: sql
1.
12345, Отгрузка неоплаченных товаров на сумму свыше 10.000 рублей

,

в интерфейсе, соответственно, чуваки будут выбирать эту строчку и разрешать её для пользователя.
...
Рейтинг: 0 / 0
Идентификация методов при назначении прав
    #39107301
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
К чему я это... к тому, что понятным для человека идентификатором привилегии будет только длинная фраза на русском. Применять её как идентификатор в коде - крайне некузяво. Поэтому нужна схема id-value, то есть в коде будет нечто типа

Код: sql
1.
 if (User.HaveRight(12345))

,

в таблице

Код: sql
1.
12345, Отгрузка неоплаченных товаров на сумму свыше 10.000 рублей

,

в интерфейсе, соответственно, чуваки будут выбирать эту строчку и разрешать её для пользователя.
ну все равно желательно сокращенное английское название так код будет более читабельным.
чтото типа
id name description
Ну а то что функция <> праву это понятно конечно.
Если это все принять во внимание то ничего нового в вашем посте пожалуй нет. Да я так спросил на всякий случай вдруг что-то полезное.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Идентификация методов при назначении прав
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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