Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Логика приложения
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Логика приложения

Страниц (3): [1] 2 3 »
 

1. dubasua - 29 Июня, 2013 - 23:05:32 - перейти к сообщению
Вот и я решил создать тему, а то как то скучновато.
Нужно правильно построить логику приложения, а конкретно - на каком уровне выполнять проверку прав доступа.
И так представим что есть некоторый фрейм. В процессе выполнения которого, он на определенном этапе получает массив с экшенами и их парметрами которые нужно выполнить не посредственно по запросу пользователя. Вопрос в том, где определить разрешено ли тукещему юзеру запустить тот или другой экшин. Как правило есть два варианта: первый - проверять непосредственно перед запускам экшена в самом фрейме, или второй - в начале каждого экшена?
(Добавление)
Ну что, никто не реализовывал такую логику?
2. DeepVarvar - 30 Июня, 2013 - 00:49:55 - перейти к сообщению
Что есть фрейм? Это <iframe ..> ?
Если да, то как он может выполняться?
Задай вопрос конкретнее.
3. dubasua - 30 Июня, 2013 - 01:45:37 - перейти к сообщению
DeepVarvar пишет:
Что есть фрейм? Это <iframe ..> ?

Нет, ну какой же <iframe? Я говорю о PHP. Фрейм - FrameWork, что-то на подобе фронт-енд контролера, по которому протекает рабочий цикл от REQUEST до RESPONSE.
4. vanicon - 30 Июня, 2013 - 01:48:43 - перейти к сообщению
dubasua пишет:
непосредственно перед запускам экшена в самом фрейме

Разве это не очевидно?
5. LIME - 30 Июня, 2013 - 01:50:50 - перейти к сообщению
а ты реши как тебе больше нравится и не ломай людям мосг "фреймами"
(Добавление)
vanicon для меня очевидно обратное
6. vanicon - 30 Июня, 2013 - 01:55:06 - перейти к сообщению
LIME
Тут как кому по душе, можно и там и там...
7. dubasua - 30 Июня, 2013 - 01:57:13 - перейти к сообщению
LIME пишет:
а ты реши как тебе больше нравится

Лично мне больше нравится даже не отдавать эти экшины, если нет на них доступа, но и здесь есть подводные камни, как и с предыдущими вариантами.
8. LIME - 30 Июня, 2013 - 02:04:04 - перейти к сообщению
vanicon тоесть в роутере хранить списочек кому что можно
и при изменении контролеров его редактировать?
а если им еще и разные действия надо делать при попытках нелегальных?
ТС делай всяко...так и поймешь что лучше
(Добавление)
каждый должен знать только про себя
9. DeepVarvar - 30 Июня, 2013 - 02:06:20 - перейти к сообщению
Бред какойто. Я себе реализовал так:

Описание прав содержится прямо в контроллере.
А у пользака (вернее у его группы) хранятся те права, которые ему можно.
Ну так перед запуском экшна (читай метода) я проверяю есть ли у метода описание прав, и если есть, то ищу у пользака.
Если у пользака не найдено - пшел вон..

А если вообще прав не установлено, то и не проверяю.
Еси тока рефлексией позырю чо он там запускает, приват или паблик метод и все..

Достаточно?
10. vanicon - 30 Июня, 2013 - 02:06:27 - перейти к сообщению
LIME
Необязательно в роутере.
Можно в самом контроллере это сделать, наподобие как в yii.
11. LIME - 30 Июня, 2013 - 02:06:53 - перейти к сообщению
это я о архитектуре
12. dubasua - 30 Июня, 2013 - 02:12:21 - перейти к сообщению
DeepVarvar пишет:
Достаточно?

Не до конца.
DeepVarvar пишет:
Описание прав содержится прямо в контроллере

DeepVarvar пишет:
А у пользака (вернее у его группы) хранятся те права, которые ему можно.

Где связь? Как группе изменить права, после добавления 10-ти контроллеров?
(Добавление)
Вот если делать проверку перед запуском, внутри самого фрейма, то недоступный экшин можно вызвать внутри разрешенного экшена, а если проверку делать в начале каждого экшена, много дублирования получается, да и как логически привязать "новостную ленту", что бы она еще и отвечала за доступ к самой себе.
13. DeepVarvar - 30 Июня, 2013 - 02:16:52 - перейти к сообщению
dubasua пишет:
Где связь? Как группе изменить права, после добавления 10-ти контроллеров?
В админке есть кнопочка "Пересчитать права доступа".
14. dubasua - 30 Июня, 2013 - 02:18:27 - перейти к сообщению
DeepVarvar пишет:
В админке есть кнопочка "Пересчитать права доступа".

Это реализовано в Вашей CMS?
15. DeepVarvar - 30 Июня, 2013 - 02:19:39 - перейти к сообщению
да
Цитата:
Кнопка «Пересчитать права доступа» позволяет пересчитать права доступа перечисленных во всех модулях системы, с целью дальнейшего отображения полного списка прав пользователей в разделе Группы при создании и редактировании групп пользователей. Данная опция имеет смысл при разработке или подключении дополнительных модулей, т.к. права доступа хранятся непосредственно в исходном коде модулей.

 

Powered by ExBB FM 1.0 RC1