2013-01-13 58 views
2

註冊後,我保證用戶登錄如下:觸發認證成功事件

$token = new UsernamePasswordToken($user, null, 'secured_area', $user->getRoles()); 
$this->get('security.context')->setToken($token); 

和希望,這也將引發我的成功處理程序:

$this->get('event_dispatcher')->dispatch(
    AuthenticationEvents::AUTHENTICATION_SUCCESS, 
    new AuthenticationEvent($token) 
); 

處理程序在安全配置中的標準表單登錄中設置,例如

firewalls: 
    secured_area: 
     form_login: 
      success_handler: authentication_handler 

成功處理程序在登錄時觸發正常但註冊後未觸發。

這只是一個配置問題?和/或所有這些都可以通過單個事件來實現?

回答

0

我認爲你必須認證用戶觸發事件:

$token = $this->get('my.bundle.authentication.manager')->authenticate(new UsernamePasswordToken($user, null, 'secured_area', $user->getRoles())); 
$this->get('security.context')->setToken($token); 

my.bundle.authentication.manager將是security.authentication.manager一個別名,它可能是這樣註冊(XML):

<service id="my.bundle.authentication.manager" alias="security.authentication.manager" />