【问题标题】:Symfony Before filter not reporting the authentication tokenSymfony 过滤器之前未报告身份验证令牌
【发布时间】:2016-12-30 10:45:19
【问题描述】:

我正在尝试在过滤器之前创建一个 symfony:到目前为止,我使用了本指南
(http://symfony.com/doc/current/event_dispatcher/before_after_filters.html)

这是代码的重要部分

// src/AppBundle/EventListener/LoginListener.php
class LoginListener {
private $tokens_storage;

public function __construct($tokens_storage) {
    $this->tokens_storage = $tokens_storage;
}

public function onKernelController(FilterControllerEvent $event) {
    $controller = $event->getController();

    dump($this->tokens_storage->getToken());

    /*
        ...
    */

    return;
}

// app/config/services.yml
app.tokens.LoginListener:
    class: AppBundle\EventListener\LoginListener
    arguments: ["@security.token_storage"]
    tags:
        - { name: kernel.event_listener, event: kernel.controller, method: onKernelController }

现在,根据转储,$this->tokens_storage->getToken() 返回 null,但根据屏幕底部的分析器栏,我通过 UsernamePasswordToken 进行身份验证。
我怎样才能找回那个令牌?

编辑:如果我从控制器访问令牌存储,则 TokenStorage 内的令牌被正确填充

【问题讨论】:

  • 我猜它与优先级有关,请确保您的监听器在安全服务完成填充令牌之后运行。
  • @Maerlyn 根据这个(stackoverflow.com/a/11281765/6686006)的回答,我无法设置这种监听器的优先级。

标签: php authentication symfony


【解决方案1】:

我发现在侦听器启动之前正确填充 TokenStorage 的唯一可靠方法是禁用开发防火墙;
我实际上不知道这可能会在开发过程中产生什么样的问题,但至少它现在可以工作了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2021-11-02
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多