|
|
|
Идентификация методов при назначении прав
|
|||
|---|---|---|---|
|
#18+
Нужно сделать права на действия. По идее действия это функции. Возникает вопрос как лучше эти функции идентифицировать. Можно просто в каждой функции объявить переменную со строкой идентификатором Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. А в таблице будет строка (для примера) Код: c# 1. 2. Или лучше както по другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 23:58 |
|
||
|
Идентификация методов при назначении прав
|
|||
|---|---|---|---|
|
#18+
FatherSql, id точно не нужен, так как name уникально. а вообще раздели функции и действия. если действия в субд - то субд и проверять должна (а клиентская часть только запрашивать, что бы кнопку неактивную сделать или вообще спрятать что-то). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2015, 08:47 |
|
||
|
Идентификация методов при назначении прав
|
|||
|---|---|---|---|
|
#18+
FatherSqlНужно сделать права на действия. По идее действия это функции. Возникает вопрос как лучше эти функции идентифицировать. Можно просто в каждой функции объявить переменную со строкой идентификатором Нет, это точно будет плохо. Потому что действие - то, на что назначаются права - это предмет бизнес-логики, внешнего мира, а функция - предмет внутренней реализации. Жёстко завязывать их - означает организовывать потенциальную архитектурную проблему, ну всё равно как пришивать подол рубашки к штанам. Потом неизбежно окажется, что в 5% случаев таки надо в func2() проверять права на func1(), и всё станет совсем весело. Как идентифицировать... в принципе, зависит от того, во что эти права выльются. Приведу пример с одной из моих работ: когда пользователь жмёт на кнопку, условно, "оформить отгрузку", проверяется факт оплаты. Есть стопроцентная оплата - оформляется. Нет - пользователь проверяется на наличие привилегии "оформить не оплаченную отгрузку", если таковой нет - посылается. Если таковая есть, считается сумма отгружаемых товаров. Если она меньше 10.000 рублей - оформляется. Если больше - проверяется на наличие привилегии "оформить не оплаченную отгрузку более чем на 10.000 рублей". Там возможны три варианта: нет привилегии - посылается, есть привилегия - оформляется, есть привилегия с пометкой "только с разрешения начальника" - начальнику автоматически посылается копия экрана и прочая справочная информация, оформление посылается. Если начальник смотрит на присланное и жмёт кнопку "разрешить", сотруднику приходит извещение об этом, и в этом случае, когда он снова нажмёт кнопку "Оформить" и снова дойдёт до проверки привилегии, проверка будет пройдена и отгрузка будет оформлена. К чему я это... к тому, что понятным для человека идентификатором привилегии будет только длинная фраза на русском. Применять её как идентификатор в коде - крайне некузяво. Поэтому нужна схема id-value, то есть в коде будет нечто типа Код: sql 1. , в таблице Код: sql 1. , в интерфейсе, соответственно, чуваки будут выбирать эту строчку и разрешать её для пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 18:12 |
|
||
|
Идентификация методов при назначении прав
|
|||
|---|---|---|---|
|
#18+
softwarer К чему я это... к тому, что понятным для человека идентификатором привилегии будет только длинная фраза на русском. Применять её как идентификатор в коде - крайне некузяво. Поэтому нужна схема id-value, то есть в коде будет нечто типа Код: sql 1. , в таблице Код: sql 1. , в интерфейсе, соответственно, чуваки будут выбирать эту строчку и разрешать её для пользователя. ну все равно желательно сокращенное английское название так код будет более читабельным. чтото типа id name description Ну а то что функция <> праву это понятно конечно. Если это все принять во внимание то ничего нового в вашем посте пожалуй нет. Да я так спросил на всякий случай вдруг что-то полезное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 03:26 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=33&tid=1340870]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 346ms |

| 0 / 0 |
