security access_control: конкретный возврат (json), если ajax - PullRequest
3 голосов
/ 04 февраля 2012

Я использую access_control (securiry.yml) для контроля доступа на моих страницах. Вот так:

- { path: ^/, roles: ROLE_USER }

Если не подключенный пользователь попытается получить доступ, он будет перенаправлен. Хорошо это приятно Но некоторые ссылки могут быть использованы с Ajax. И я хотел бы, чтобы access_control возвращал данные JSON в этом случае (не подключен). Возможно ли это?

1 Ответ

1 голос
/ 29 июля 2012

Вы должны написать свой собственный AuthenticationHandler, который будет реализовывать два интерфейса ниже:

class AuthenticationHandler implements AuthenticationFailureHandlerInterface, 
                                       AuthenticationSuccessHandlerInterface

В этом обработчике вы должны определить два метода onAuthenticationFailure() и onAuthenticationSuccess()

Внутриони просто проверяют, если $request->isXmlHttpRequest()

    if ($request->isXmlHttpRequest()) {
        ...
        return new Response($json);
    } else {
        ...
        return new RedirectResponse($url);
    }

Не забудьте также установить ваш слушатель в security.yml

firewalls:
    main:
        ....
        your_form_login:
            ...
            failure_handler: your.authentication_handler
            success_handler: your.authentication_handler
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...