2013-12-19 19 views
0

夥計們有關於如何在註冊時創建'isEnabled'(活動\非活動帳戶)的說明。Symfony2,安全性,註冊和啓用錯誤

http://symfony.com/doc/current/cookbook/security/entity_provider.html#forbid-inactive-users

但沒有說明如何獲取登錄操作此錯誤。例如,我正在正確地註冊用戶帳戶默認爲非活動狀態。用戶登錄後,如果賬戶沒有通過電子郵件鏈接激活,我怎麼能得到「inAcitve」?

+1

您是否嘗試過使用FOSUserBundle https://github.com/FriendsOfSymfony/FOSUserBundle?它旨在處理註冊和確認電子郵件等常見任務。 –

+0

不,我在獨立捆綁包中沒有興趣,我想知道如何在本地SF2中執行此操作。 – user1954544

回答

0

是很簡單:你可以創建一個服務,將作爲一個事件監聽器

# app/config/config.yml 
services: 
    your_bundle_name.login_listener: 
    class: FQN\Of\Your\Bundle\Class\Listener 
    tags: 
     - { kernel.event_listener, security.interactive_login} 

標籤部分是存在的,因爲您的應用程序的引導程序,內核將「附加」某種類型的事件到您的服務,並會在每次發生此事件時調用該服務的方法。 所以kernel.event_listener是存在的,因爲每一個事件監聽器都被標記這樣(跟着它作爲一個「規則」),併爲用戶成功地登錄security.interactive_login將被解僱。

你的類可以是這樣的

//omitting class declaration on purpose 
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event) { 
    $user = $event->getAuthenticationToken()->getUser(); 
    if (!$user->isActive()) { 
    //do the proper action to display the error 
    } 
}