こんにちは。オガリア開発チームの粂です。
CakePHPのバージョン:2.4
ログイン時の成功・失敗をログに出力する方法についてです。
たいした内容ではないのですが、探してもあんまり見つからなかったのでブログに書いておきます。
- ログイン認証にはAuthComponentを使っている
- access.logにログインの成功・失敗ステータスをログインユーザ名と一緒に出力したい
- モデル名にUser、ログインIDはusernameを使用していて、コントローラー側ではauthというメソッドで認証する
まず、access.logの出力設定ですが、以下をbootstrap.phpに追記します。
CakeLog::config('access', array(
'engine' => 'File',
'types' => array('access'),
'file' => 'access',
));
これでlogメソッド呼び出し時に引数typeにaccessを指定すれば、app/tmp/logs/access.logにログが出力されます。
次にauthメソッドの実装例です。
public function auth() {
$username = $this->request->data['User']['username'];
if ($this->Auth->login()) {
$this->log($username . ' login success', 'access');
return $this->redirect($this->Auth->redirectUrl());
} else {
$this->log($username . ' login failed', 'access');
$this->redirect('index');
}
}
こんな感じで書けば、ユーザ名とあわせてログイン成功・失敗のステータスが出力できます。
最後までお読みいただきありがとうございました!
