2014-01-07 55 views
0

我運行的CakePHP V2.4和文檔顯示控制內置的驗證組件行爲的幾個自定義選項。但是,我沒有看到任何關於在login()或logout()之後添加回調的問題。CakePHP的:如何回調添加到驗證::登錄()或驗證::註銷()

我需要運行一些與這些操作相關的其他例程,並且該代碼要在集中式回調中生存很多DRYer,而不是在調用login()或logout()時將其重寫。

+0

我以前遇到過這種情況。它似乎沒有內置的回調。 – XuDing

回答

0
class UsersController extends AppController { 

function afterLogin($successfully){ 
     if($successfully == true){ 
      // do something if logged successfully 
     }else{ 
      // do something if not 
     } 
    } 

} 

Read more.

+4

在你的回答中調用'afterLogin()'是什麼? – emersonthis

+0

這不適用於蛋糕2.7.2 –

3

擴展AuthComponent通過@Eisa阿迪爾的建議,是不錯的,但我會建議使用Event。您將添加App::uses('CakeEventManager', 'Event');和您的擴展登錄方法可以是這樣的:

function login($user = null) { 
    CakeEventManager::instance()->dispatch(new CakeEvent('Auth.beforeLogin', $this, array('user' => $user))); 
    $loggedIn = parent::login($user); 
    CakeEventManager::instance()->dispatch(new CakeEvent('Auth.afterLogin', $this, array('user' => $user))); 

    return $loggedIn; 
} 

的,你可以在你的custom event listener定義您的回調,所以你可以有很多聽衆(方便的插件),控制器外,你甚至可以決定在某些情況下停止事件。