私はCakePHPとフレームワークを初めて使いました。私は運が無ければ答えを探すためにGoogleを試しました。CakePHPのログイン時にユーザーレコードを更新するにはどうしたらいいですか?
私は空のlogin()関数を使用しており、ログイン時にユーザーレコードを変更できるようにしたい(last_loginなど)。どうやってやるの?
私はCakePHPとフレームワークを初めて使いました。私は運が無ければ答えを探すためにGoogleを試しました。CakePHPのログイン時にユーザーレコードを更新するにはどうしたらいいですか?
私は空のlogin()関数を使用しており、ログイン時にユーザーレコードを変更できるようにしたい(last_loginなど)。どうやってやるの?
:
$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'));
}
注:あなたは、ユーザーテーブルおよび日時にそのセットにlast_loginフィールドを持っていることを確認してください。
アプリあなたにAuthComponent
に建て使用していると仮定すると、あなたはあなたのコントローラで次のプロパティを設定する必要があります。
$this->Auth->autoRedirect = false;
はこれを行うためにあなたのlogin()
機能(およびlogout()
)を使用することができますもの。現在ログインしているユーザーに関する情報は、
$this->Auth->user()
で利用できます。このデータを使用して、そのユーザーに必要なものを実行できます。
恥知らずの自己宣伝として、my open source projectを見てみましょう。このテクニックを使って「私を覚えてください」というクッキーを作成しています。
autoRedirectをtrueに設定しても、login()関数にstuffを追加できると思います。私は暗黙のリダイレクト(ユーザー要求の制限されたリソース、ログインしてからリダイレクトされる)に関するいくつかの問題を抱えていたので、ログイン機能にいくつかのコードを追加しました。正常に動作するように見え、さらにautomagicログイン機能が呼び出されます。
私はログインして、あなたのために動作するかどうかを確認するためにいくつかのロジックを追加するといいでしょう。あなたはケーキのAuthコンポーネントを使用している場合は、まずあなたはのbeforeFilter関数に次の行を挿入する必要があります
私が好きなパターンは、UserモデルでafterLogin()フックを作成することです。そして、Userモデルに作成
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());
}
}
:
function afterLogin($User) {
// perform actions on $User here
return true; // return false to halt login
}
をだからあなたがUserControllerでのようなものを作成します