2012-06-23 10 views
7

Sto scrivendo un listener di base per l'evento kernel.request in Symfony 2. La definizione del servizio è piuttosto semplice e le annotazioni provengono da JMSDiExtraBundle.Token di autenticazione sempre null nell'evento kernel.request in Symfony 2?

problemi è che $context->getToken() è sempre nullo anche l'utente è completamente autenticato:

/** 
* @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(); 
    } 

} 

Credo che la mia configurazione di sicurezza sta funzionando benissimo. Quale potrebbe essere il problema allora?

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 } 

risposta

19

Con priority = 255, il vostro ascoltatore viene chiamato prima il firewall di sicurezza (priority = 8, look here).

Provare a modificare la priorità.

+0

Grazie, ora funziona. – gremo

+0

Guarda qui https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Security/Http/Firewall.php#L93, grazie. :) – umpirsky