2012-06-23 7 views
7

symfony 2のkernel.requestイベントの基本的なリスナーを書くのは難しいです。サービス定義はとても簡単で、注釈はJMSDiExtraBundleから来ています。Symfony 2のkernel.requestイベントで認証トークンは常にnullですか?

の問題であっても、ユーザーが完全に認証され$context->getToken()は常にnullであることをさ:

/** 
* @Service("request.set_messages_count_listener") 
* 
*/ 
class RequestListener 
{ 

    /** 
    * @var \Symfony\Component\DependencyInjection\ContainerInterface 
    */ 
    private $container; 

    /** 
    * @InjectParams({"container" = @Inject("service_container")}) 
    * 
    */ 
    public function __construct(ContainerInterface $container) 
    { 
     $this->container = $container; 
    } 

    /** 
    * @Observe("kernel.request", priority = 255) 
    */ 
    public function onKernelRequest(GetResponseEvent $event) 
    { 
     $context = $this->container->get('security.context'); 
     var_dump($context->getToken()); die(); 
    } 

} 

は、私は私のセキュリティ設定が正常に動作していると思います。その後、何が問題になるのでしょうか? priority = 255

secured_area: 
    pattern: ^/app/ 
    switch_user: true 
    form_login: 
     check_path: /app/login_check 
     login_path: /app/login 
     default_target_path: /app/dashboard 
     always_use_default_target_path: true 
    logout: 
     path: /demo/secured/logout # TODO 
     target: /demo/    # TODO 

access_control: 
    - { path: ^/app/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/app/users, roles: ROLE_MNG_USERS } 
    - { path: ^/app/messages, roles: ROLE_MNG_USERS } 
    - { path: ^/app/roles, roles: ROLE_MNG_PACKAGES_FEATURES } 
    - { path: ^/app/packages, roles: ROLE_MNG_PACKAGES_FEATURES } 
    - { path: ^/app/,   roles: ROLE_USER } 

答えて

19

、あなたのリスナーは、セキュリティ、ファイアウォール(priority = 8look here)の前に呼び出されます。

あなたの優先順位を変更してください。

+0

ありがとうございます。 – gremo

+0

ここを見てくださいhttps://github.com/symfony/symfony/blob/master/src/Symfony/Component/Security/Http/Firewall.php#L93、ありがとう。 :) – umpirsky