ちょっとした案件で CakePHP のユーザ管理の仕組みを作る必要があるのだけど、どうもまとまった情報がない。
そこで、このブログエントリで ToDo をまとめつつ、各項目を埋めていくことにする。
(2008/7/7追記)常に 1.2 系で開発しているため、今回のまとめは AuthComponent を使ったものにまとめていくよう方針変更。
■CakePHP でユーザ管理をするには?
まずは公式ドキュメント?
-Cookbook :: 1.2 Collection :: マニュアル :: 組み込みのコンポーネント :: Authentication :: AuthComponent Methods
次に基本を解説してくださっているサイト。
-【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】 | ねねとまつの小部屋
・・・app_controller の下準備の話が出ていないようだけど、それにあたるものを設定しないと動かないんじゃないのかなぁ。そもそも isAuthorized が定義されていませんと言われるし。CakePHP Authentication Component - Tutorial Oneにあるような最小単位の app_controller の設定が必要かも。
でも自分の場合はそれでもうまく行かなかったので、CakePHP Auth Component - Tutorial Two を参考に各コントローラの中に isAuthorized と beforeFilter をつくり、その beforeFilter の中に
$this->Auth->authorize = 'controller';
を追加した上で各コントローラに配置したらうまく行った。
CakePHP の AuthComponent と格闘中 (スパイスボックス・ラボラトリブログ) に詳細を書きましたが、上記部分は不要箇所として抹消します。
■ユーザデータベースの設計は?
-B.2. 認証と継続チェック・・・どうやら定義としては「username」と「password」のようだ。
■登録フォームを用意するには?
-【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】 | ねねとまつの小部屋・・・ここに詳しく載っている
■確認メールを用意するには?
-[cakephp]ユーザーのメールの認証をする-ひとり開発ブログ・・・まあだいたいこんな感じでしょう
■ログインフォームを出力するには?
-B.2. 認証と継続チェック・・・コントローラとビューがあるようです。
■各ページでログインチェックをするには?
-B. 例:簡単なユーザ認証・・・どうやら app_controller というのを使うと、全ページ共通でいろいろ出来るっぽい。
-CakePHP のおいしい食べ方: いちばん簡単な認証システム
ここはものすごく詰まった。実際にうまく行かなかった最大の理由は isAuthorized() が置き場所によっては undefined function エラーになってしまうこと。よく使うポイントしては、ログイン成功した直後のリダイレクト先のモデルのコントローラになるだろうか、そこの beforeFilter などではチェックできず、なんらかのメソッド( index() など )の中で、$this->Auth->isAuthorized() というかたちで呼ばないといけない。なんだかピンポイント過ぎる・・・。もう少しエラーメッセージが親切だったらいいのに。この件に関しては、1.2, AuthComponent: Call to a member function isAuthorized() on a non-object - CakePHP | Google グループ を参考にした。
■自動ログインさせるには?
※(2008/08/07追記)ここのやり方で、本当にうまくいっています。
ついでに、CakePHP Note:自動ログインその2やCakePHP Note:AuthComponentも必読ですね。
-codeなにがし::CakePHPで自動ログインコンポーネント
■ログアウトさせるには?
CakePHP Note:自動ログインその1に、やり方が併せて書いてあります。
■ユーザ情報編集ページを作るには?
■ユーザ退会ページを作るには?
■実例
・"Cakeを使ったCMS土台のまとめ" フォーラム - CakePHP Users in Japan・・・このへんの実例を見ちゃうのも早いかも
・CakePHP プログラマーズ リファレンスガイド・・・たいていのことはここでわかるらしい(via. CakePHP :: [コエカタマリン MX 2007])
関連記事


