symfony @Security and redirect_url

1

Можно использовать

    /**
     * @Security("has_role('ROLE_USER')")
     */
    public function indexAction()
    {
        // ...
    }

и определить redirect_url для после переадресации входа

здесь security.yml

firewalls:
        main:
            pattern: ^/
            form_login:
                target_path_parameter: redirect_url

Я не могу использовать referrer, потому что его запрос ajax.

так что теперь я использую

if(!$user = $this->getUser()) {
            return $this->redirect($this->generateUrl('fos_user_security_login', array(
                'redirect_url' => $request->server->get('HTTP_REFERER')
            )));
        }

возможно это сделать в аннотациях безопасности?

Теги:
annotations
fosuserbundle

1 ответ

1
Лучший ответ

Вы можете определить обработчик успеха входа:

form_login:
    success_handler: some.service.id

Создайте класс, который реализует \Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface и заставляет метод onAuthenticationSuccess() возвращать \Symfony\Component\HttpFoundation\RedirectResponse любой URL-адрес, который вы хотите.

Таким образом, вы можете иметь любую настраиваемую логику определения целевого URL-адреса, который вам нужен.

Например, вы можете использовать метод \Symfony\Component\HttpFoundation\Request::isXmlHttpRequest() чтобы выяснить, является ли он запросом Ajax и действует соответствующим образом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню