Настройка безопасности для Symfony2 без входа - PullRequest
3 голосов
/ 21 января 2012

Я уже некоторое время пытаюсь настроить symfony2, и довольно долго все шло хорошо, но я столкнулся с проблемой.Я не могу понять, как получить настройки безопасности.В нашем учреждении у нас есть установка cas (единый вход) и статического класса, который работает со всеми элементами аутентификации.Это называется привратником.Гейткипер выполняет всю проверку роли и имени пользователя для входа.Я хочу иметь возможность использовать авторизацию symfony2, но не аутентификацию.Это возможно?Я прочитал документацию, но кажется, что эти вещи слишком тесно связаны между собой.У кого-нибудь есть идеи по этой теме?

1 Ответ

3 голосов
/ 21 января 2012

Если вы используете класс Gatekeeper для проверки подлинности до того, как запрос попадет в брандмауэр, вы можете создать прослушиватель с предварительной проверкой подлинности (т. Е. Проверка подлинности происходит перед брандмауэром), расширив AbstractPreAuthenticatedListener и реализовав getPreAuthenticatedData() :

class GatekeeperListener extends AbstractPreAuthenticatedListener
{
    protected function getPreAuthenticatedData(Request $request)
    {
        return array(
            Gatekeeper::getCurrentUsername(), // username
            '',                               // credentials
        );
    }
}

Вам нужно будет создать фабрику безопасности, чтобы ввести в систему новый прослушиватель аутентификации. Этот процесс описан в этой статье поваренной книги:

Как создать собственный поставщик аутентификации: The Factory

Ваш security.yml должен выглядеть примерно так:

security:
    factories:
        - "%kernel.root_dir%/../src/Acme/DemoBundle/Resources/config/security_factories.yml"

    firewalls:
        main:
            pattern: .
            gatekeeper: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...