2012-06-12 6 views
0

Я разрабатываю проект в Symfony2 (.0.x), и я создаю простую систему автоматического входа в систему. Теперь для этого нужно прослушать событие, которое запускает метод handle() в брандмауэре. Проблема только в том, что я не могу понять, как это сделать. (Я также использую FOSUserBundle в сочетании с FOSFacebookbundle)Прослушать метод дескриптора брандмауэра symfony

Кто-то, кто мог мне помочь. (Или скажите мне, если я делаю все это неправильно)

Это моя служба:

project.user.auto_login_listener: 
     class: Project\UserBundle\Listener\AutoLoginListener 
     public: false 
     abstract: true 
     arguments: [@security.context, @security.authentication.manager, '' , '' , @logger, @event.dispatcher] 

Я удалил свой слушатель событий в этом примере, потому что он не работает

<?php 

namespace Project\UserBundle\Listener; 

use Symfony\Component\EventDispatcher\EventDispatcherInterface; 
use Symfony\Component\HttpKernel\Event\GetResponseEvent; 
use Symfony\Component\HttpKernel\Log\LoggerInterface; 
use Symfony\Component\Security\Core\SecurityContextInterface; 
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; 
use Symfony\Component\Security\Core\Exception\AuthenticationException; 
use Symfony\Component\Security\Http\SecurityEvents; 
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; 
use Symfony\Component\Security\Http\Firewall\ListenerInterface; 

class AutoLoginListener implements ListenerInterface { 
    private $authenticationManager; 
    private $dispatcher; 
    private $logger; 
    private $providerKey; 
    private $securityContext; 
    private $tokenParam; 


    public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, $providerKey, $tokenParam, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) 
    { 
     $this->securityContext = $securityContext; 
     $this->authenticationManager = $authenticationManager; 
     $this->providerKey = $providerKey; 
     $this->tokenParam = $tokenParam; 
     $this->logger = $logger; 
     $this->dispatcher = $dispatcher; 
    } 

    public function handle(GetResponseEvent $event) 
    { 
     die("test"); 
    } 
} 
?> 

Спасибо!

ответ

3

Необходимо создать новый поставщик аутентификации. Следуйте за this записью поваренной книги.

Смежные вопросы