続:CakePHP1.2 Authコンポーネントを使った認証機能
こんにちは、最近引越しを考えている ichikawaです。
今回は、前回の「CakePHP1.2 Authコンポーネントを使った認証機能」の続きを書きたいと思います。
未ログイン状態で見られるページを設定する
新規登録ページや、パスワード再設定のページなど、ログインしていない状態でも表示したい場合には設定が必要です。
例えば、新規登録がregisterアクション、パスワード再設定がforgot_passwordアクションの場合は、コントローラーに以下のように設定します。
$this->Auth->allow('register', 'forgot_password');
以上で、設定したページはログインしていない状態でも見られるようになります。
Authコンポーネントのハッシュ化の方法を独自に設定する
Authコンポーネントは、デフォルトではコアユーティリティクラス Security の hash 関数を使用します。(公式マニュアルより)
例えば「ハッシュ化したくない」とか、「md5でハッシュ化したい」場合には、hashPasswords という関数を持つクラスのオブジェクトを authenticate にセットすれば可能です。
例えば、AccountモデルにhashPasswordsという関数を設定する例は下記の通りです。
まずコントローラーで、以下のように設定します。
$this->Auth->authenticate = ClassRegistry::init('Account');
そして、AccountモデルにhashPasswords 関数を用意します。
function hashPasswords($data)
{
$md5_passwd = md5($data[$this->name]['password']);
$data[$this->name]['password'] = $md5_passwd;
return $data;
}
以上で、パスワードのハッシュ化が設定したもの(上記ではmd5)に変更できます。
尚、独自のハッシュ化でなければ、Security クラスでの変更も可能です。
詳しくはこちらの公式マニュアルをご覧ください。
ログインしているユーザー情報を取得する
「$this->Auth->user()」で、ログインしているユーザー情報を取得できます。
// コントローラー
$user = $this->Auth->user();
$this->set('user', $user);
// ビュー
echo "こんにちは ".$user['name']." さん!";
上記のような方法で、簡単にログインしているユーザー情報が取得できます。
以上で簡単ですが、Authコンポーネントをご紹介いたしました。
何かのお役にたてれば幸いです。