2011-07-28 71 views
2

哪裏是插入代碼以保存用戶上次登錄的最佳位置?我幾乎在手冊的標準實現中使用了CakePHP Auth登錄系統。CakePHP - 驗證以保存用戶上次登錄時間

我在哪裏可以插入代碼,以便在登錄後Auth重定向之前將其保存到用戶記錄中?

回答

10

你需要禁用AuthComponent::autoRedirect如果您在UsersController::login()方法希望對要執行的代碼:

public $components = array(
    'Auth' => array(
     // ... 
     'autoRedirect' => false, 
    ), 
); 

然後就可以做到這一點在你的登錄操作,但你仍然需要手工執行重定向:

public function login() { 
    if ($this->Auth->user()) { // check user is logged in 
     $this->User->id = $this->Auth->user('id'); // target correct record 
     $this->User->saveField('last_login', date(DATE_ATOM)); // save login time 
     $this->redirect($this->Auth->redirect()); // redirect to default place 
    } 
} 
+1

據我所知,登錄本身仍然由組件執行。在我的網站的'UsersController :: login()'方法中,在設置'last_login'值之前,我檢查嘗試的登錄和非空'$ this-> Auth-> user()'。我唯一一次顯式調用'$ this-> Auth-> login()'是在成功註冊之後並且在動態更新授權用戶數據之後。 –

+0

啊,你是正確的,我已經更新了我的答案。 – deizel