Symfony 2中的kernel.request事件中的身份验证令牌始终为空?

Posted

技术标签:

【中文标题】Symfony 2中的kernel.request事件中的身份验证令牌始终为空?【英文标题】:Authentication token always null in kernel.request event in Symfony 2? 【发布时间】:2012-06-23 08:20:44 【问题描述】:

我正在尝试为 Symfony 2 中的kernel.request 事件编写一个基本的监听器。服务定义非常简单,注释来自 JMSDiExtraBundle。

问题在于 $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();
    


我认为我的安全设置运行良好。那可能是什么问题呢?

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 

【问题讨论】:

【参考方案1】:

使用priority = 255,您的侦听器在安全防火墙之前被调用(priority = 8、look here)。

尝试改变你的优先级。

【讨论】:

看这里github.com/symfony/symfony/blob/master/src/Symfony/Component/…,谢谢。 :)

以上是关于Symfony 2中的kernel.request事件中的身份验证令牌始终为空?的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2 中的 jQuery 验证

Symfony 2 中的 ArrayCollection(表单集合)索引冲突

Symfony 3,一个应用程序中的 2 个防火墙

根据 symfony 2.0 中的路由自定义 403 错误页面

如何防止访问 Symfony 2 中的特定路由

XmlFileLoader.php 第 281 行中的 symfony 2.8 InvalidArgumentException