2011-07-28 34 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