CakePHP2でログイン時の成功・失敗をログに出力したい

こんにちは。オガリア開発チームの粂です。

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');
	}
}

こんな感じで書けば、ユーザ名とあわせてログイン成功・失敗のステータスが出力できます。

最後までお読みいただきありがとうございました!

Pocket