Если у меня есть защищенный маршрут, скажем, как panel
снизу, Symfony разрешит доступ только к зарегистрированным пользователям.Symfony security переадресовывает на страницу входа
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/panel, role: ROLE_USER }
Для пользователей, которые не вошли в него всегда будет перенаправлять их на login_path (я использую FOSUserBundle):
security:
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
login_path: fos_user_security_login
Где можно отключить или переопределить это перенаправление? Я хочу показать форму входа напрямую, не перенаправляя пользователя.
Я считаю, что это связано с AccessDeniedHandlerInterface
, но какой ключ нужно перезаписать в security.yml? И где используется реализация по умолчанию?
Для других ситуаций у нас есть DefaultLogoutSuccessHandler, DefaultAuthenticationFailureHandler, DefaultAuthenticationSuccessHandler
, и мы можем реализовать сервис для каждой из этих ситуаций, который расширяет их соответствующие интерфейсы и может обрабатывать ситуацию обычным образом. Тем не менее, ничего не могу найти для AccessDenied. Its directory содержит только интерфейс.
В чем польза? После входа в систему пользователь будет перенаправлен обратно на/панель, и он не будет отличаться - что мне не хватает? – ccKep
Я хочу добавить страницу входа на несколько маршрутов. Пользователь хочет получить доступ к странице, но он не зарегистрирован, поэтому я представляю ему регистрационную форму и после входа в систему (с помощью ajax) он перенаправляется на панель. –
, чтобы показать форму входа, вы также должны разрешить анонимный доступ. Поэтому проверьте разрешение в контроллере, например – Heah