我是CakePHP和框架的新手,我試圖谷歌尋找一個沒有任何運氣的答案。如何在CakePHP中更新登錄用戶記錄?
我正在使用空白登錄()函數,並希望能夠在登錄時更改用戶記錄(如last_login)。我怎樣才能做到這一點?你使用內置的AuthComponent
在你的應用程序
我是CakePHP和框架的新手,我試圖谷歌尋找一個沒有任何運氣的答案。如何在CakePHP中更新登錄用戶記錄?
我正在使用空白登錄()函數,並希望能夠在登錄時更改用戶記錄(如last_login)。我怎樣才能做到這一點?你使用內置的AuthComponent
在你的應用程序
如果您使用Cake的驗證組件,第一你必須把下面一行到您的beforeFilter功能:
$this->Auth->autoRedirect = false;
此設置爲false將允許下面的代碼CakePHP的登錄功能後執行已經做到了它的魔力。
在你登錄功能添加:
if ($this->Auth->User()) {
$this->User->id = $this->Auth->user('id');
$this->User->saveField('last_login', date('Y-m-d H:i:s'));
}
注意:確保你有你的用戶表和它的設置爲datetime的LAST_LOGIN領域。
假設,你需要設置以下屬性在你的控制器:
$this->Auth->autoRedirect = false;
這將使您使用login()
函數(logout()
)做東東。關於當前登錄用戶的信息通過
$this->Auth->user()
然後,您可以使用此數據做任何你想要與該用戶是可用的。
作爲一個無恥的自我推廣,我建議你看看my open source project,我使用這種技術來創建一個「記住我」的cookie。
我相信你可以添加東西到login()函數,即使autoRedirect設置爲true。我有隱式重定向(用戶請求受限資源,必須登錄,然後重定向)的一些問題,所以我在我的登錄功能中添加了一些代碼。似乎工作正常,並且automagic登錄功能被調用另外。
我會說,繼續前進,並添加一些邏輯登錄,看看它是否適合你。
我喜歡的模式是在User模型中創建一個afterLogin()掛鉤。因此,在您UsersController創建類似:
function beforeFilter() {
$this->Auth->autoRedirect = false;
parent::beforeFilter();
}
function login() {
if($this->Auth->User()) {
if(!$this->User->afterLogin($this->Auth->User())) {
return $this->logout();
}
$this->redirect($this->Auth->redirect());
}
}
然後在User模型創建:
function afterLogin($User) {
// perform actions on $User here
return true; // return false to halt login
}