2011-11-03 72 views
5

使用「正常」 - 不是「記住我」的認證 - 我可以設置一個成功和失敗的處理程序,添加此向security.yml文件:如何在Symfony2中偵聽「記住我」重新認證事件?

form_login: 
    # ... 
    success_handler: authentication_handler 
    failure_handler: authentication_handler 

但對於監聽「記住我不能找到一種方法我「重新認證,當用戶的會話過期,並且」記住我「Cookie用於再次重新認證。關於如何實現這一點的任何想法?

回答

0

我還沒有嘗試過,但也許你可以附加聽衆success_handler,但確保你通過<argument>服務配置注入SecurityContext服務。

然後,就是隻要你進入你的服務方法,你這樣做:

if ($this->securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')){ 
    // I am remembered visitor 
}else{ 
    // I am the new visitor 
} 

同樣,這只是一個想法,但聽起來就像它可以做......

+0

問題是,當用戶被一個「記住我」Cookie重新註冊時,不會調用附加到'form_login'的'success_handler'。 –

2

爲interactive_login創建監聽事件。這會在簡單和「記住我」登錄時觸發(請參閱Symfony\Component\Security\Http\Firewall\RememberMeListener.php @line:77)。

在偵聽器中,您可以通過檢查cookie來區分兩者。 你可以找到更多關於聽衆here的信息。

+0

謝謝你的回答。我現在不需要這個功能,但是當我再次需要這個功能時,我會嘗試一下你的解決方案,看它是否有效。 –

+0

我應該注意到,這雖然起作用,但不會讓您訪問Response對象。 – Putr