【发布时间】: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