Как я могу переопределить авторизацию FOSUserBundle в Symfony 2

Я использую FOSUserBundle, и я ищу лучший способ добавить логику авторизации.

Маршруты, которые я хочу найти, всегда начинаются с одного и того же шаблона:

/admin/{id}/

Идентификатор относится к сущности «Сайт».
Класс User имеет отношение ManyToOne с этой сущностью.

Поэтому я хочу каждый раз проверять, соответствует ли вызываемый маршрут «сайту», хранящемуся в моем пользовательском экземпляре.
Я проверил документацию, чтобы найти лучший способ: создание разных ролей, использование ACL, проверка вручную в каждом контроллере … Я не хочу проверять каждую вызванную функцию, но я не нахожу более легкий метод, поэтому я ищу помощь.

0

Решение

Вам необходимо настроить доступ к авторизации маршрута в app/config/security.yml файл

Как это :

access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/*, role: ROLE_ADMIN }
0

Другие решения

Я наконец нашел другое решение. Я не уверен, что это лучший способ, но он работает.

Все мои контроллеры расширяют абстрактный контроллер функцией __call, которая проверяет, соответствует ли веб-сайт пользователя сеанса тому, который был передан преобразователем параметров. Я изменяю все свои вибрации метода контроллера на «защищенный», и это кажется хорошим.

0

По вопросам рекламы [email protected]