Сначала я опишу вкратце контекст. Я хочу иметь приложение symfony, где я могу создавать различные области. В каждой из областей вы можете иметь разные типы пользователей (или роли). Каждый пользователь может иметь несколько ролей в разных областях.Где реализовать фильтр безопасности для динамических групп
Чтобы проиллюстрировать этот вопрос, мы определим:
- 2 зоны: "Площадь 1" и "Площадь 2".
- 2 пользователя: «Пользователь 1» и «Пользователь 2».
- 2 роли: «продавец» и «покупатель».
- «Пользователь 1» является продавцом и покупателем в «зоне 1»
- «Пользователь 2» является продавцом и покупателем в «зоне 1» и покупатель только в «зоне 2»
Мой вопрос: , который является лучшим способом проверить на ограниченных страницах, если пользователь принадлежит к данной области и если у него есть необходимая роль в этой области.
Подумав немного об этом, я сделал следующее:
- Когда создается область, я также создать одну sfGuardGroup за роль и один глобальный sfGuardGroup для области, каждая из которых с суффиксом области Я бы. Таким образом, в нашем примере, мы будем иметь роли:
- область-1, продавцы-1, покупатели-1 для зоны 1
- площадь-2, продавцы-2, покупатели-2 для области 2
- Пользователи добавлены в соответствующие группы. Таким образом, в нашем примере:
- пользователя 1 будет принадлежать области-1 группы, продавцы-1 и покупатели-1
- пользователя 2 будет принадлежать области-1 группы, продавцы-1, покупатели-1, площадь -2 и покупатели-2
- Из URL, я знаю, в какой области мы, к примеру:
- http://example.com/area-1/sellers-restricted-page (доступен для пользователей в группе зонная 1 и продавцы-1)
- http://example.com/area-2/buyers-restricted-page (доступно для пользователей в группе-2 и покупатели-2)
- http://example.com/area-2/ (доступен для пользователей в группе площадь-2)
В этот момент, я вроде застрял, как я не могу разобрать, лучшее место, чтобы осуществить проверку разрешений: изменить защитный фильтр ? Изменить действия?
Спасибо, что поставили меня на правильный путь. Кажется, что после некоторых тестов мне удастся пойти куда-нибудь, используя пользовательский sfFilter. – 2010-12-07 15:03:33