私は Symfony2(.0.x) でプロジェクトを開発しており、単純な自動ログイン システムを構築しています。そのために、ファイアウォールで handle() メソッドをトリガーするイベントをリッスンします。唯一の問題は、それを行う方法を見つけることができないということです。(私は FOSFacebookbundle と組み合わせた FOSUserBundle も使用しています)
私を助けてくれる人。(または、私がそれをすべて間違っているかどうか教えてください)
これは私のサービスです:
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");
}
}
?>
ありがとう!