2016-12-30 72 views
1

我試圖創建過濾器之前的symfony:到目前爲止,我用這個指南
http://symfony.com/doc/current/event_dispatcher/before_after_filters.htmlSymfony的過濾器之前沒有報告的認證令牌

下面的代碼

// 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的內部令牌被正確填充

+2

我猜它必須處理優先級,確保你的監聽器在安全服務之後運行完成填充令牌。 – Maerlyn

+0

@Maerlyn根據這個(http://stackoverflow.com/a/11281765/6686006)回答,我無法設置這種監聽器的優先級。 – Vkfan

回答

0

唯一萬無一失的方法,我發現到聽者踢之前正確填充TokenStorage中是禁用dev的防火牆;
我實際上並不知道在開發過程中會產生什麼樣的問題,但至少現在可以運作,現在

相關問題