
ラボ神部です。昨日からCakePHP の AuthComponent と格闘中です。
あまりにもにっちもさっちもいかなくなってしまったので、authtest というプロダクトを作り、其処にたぶんリリースされたばかりの 1.2.0.7296 RC2 を入れて、一番シンプルな認証テストケースを作ってみようと思います。
インストールが完了した段階から Wiki ライクにこちらのエントリを更新します。
(12/7追記)
この記事を書いた後、なんどか AuthComponent を使うサービスのコードを書きましたが、基本的には
-CakePHP 1.2 の AuthComponent でユーザ管理 (ラボブログ)
の冒頭で書かれているねねとまつの小部屋さんのエントリが必要十分な内容です。そこからたどれるドキュメントも含めて深く読み進めることをおすすめします。
流れ的なもの
users データベースの作成
CREATE TABLE `authtest`.`users` (
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`created` DATETIME NOT NULL ,
`modified` DATETIME NOT NULL ,
`username` TEXT NOT NULL ,
`password` TEXT NOT NULL
PRIMARY KEY ( `id` )
) ENGINE = MYISAM
※デフォルトでは、username, password の組でないとユーザ登録しても users データベースに登録されない
ユーザ登録部分は、【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】 | ねねとまつの小部屋 に書いてある通りでうまく行っています(先日のエントリでは疑問点など書きましたが、環境を洗いなおしたらここに書いてあるものだけで確かに十分でした)
では引き続きログイン後に別のモデルの処理に飛ばしたいときのことを考えて見ます。
(8/8追記)
ちょっと壁にぶち当たってます。
所謂 AuthComponentのredirectでハマった|suzukiのCakePHPブログ、"Authコンポーネントで、ログイン成功時に・・・" フォーラム - CakePHP Users in Japan あたりで話題になっているリダイレクト先の破壊の問題なのですが・・・結局はここにぶち当たるみたいです
(8/11追記)
"redirect後にセッションが消える" フォーラム - CakePHP Users in Japanを参考に、core.php の CAKE_SECURITYをmiddle にしたとこと、私の環境では解決下っぽい。
しかし、記事で
上記のリンク先では結論としてCAKE_SECURITYをmiddleに変更して様子を見るで終わっているのですが
として明示されている"認証と継続チェック" フォーラム - CakePHP Users in Japan という記事には、この設定について書かれている箇所は2ページ目にあります。"認証と継続チェック" フォーラム - CakePHP Users in Japan うーん、やっぱり phpBB 系フォーラムは情報が見つけにくくてダメだなぁ。
番外編:困ったこととその解決法
RC2 から RC3 に移行するとき困った点
この話とはちょっと関係ないのですが、RC2 から RC3 に移行したときにちょっと困ったところがあったので書いておきます。
1.2 からの $this->form は (1.1 の $this->html でもそうなのでしょうけど)、div => false にしないとレイアウトがしにくいので、出力されたコードをコピペしてハードコーディングしていました。すると RC3 になって出力されるフォームや値の渡し方が変わったらしく、正常に動かなくなってしまいました。
コツをしらないとレイアウトが不便になるとはいえ、ここを適当にやってしまうとあとで雨後書かなくなってしまうということで、form ヘルパーはあまり使い勝手がいいとは感じませんがやはり入出力まわりは変更がない限り CakePHP にじぶんで出力させるのが得策なようです。
関連記事



コメント ( 2 )
suzuki さん、こんにちは。
お返事が大変遅れました。
直接的な回答にはなりませんが、まずは Auth コンポーネントを動かすためだけのプロダクトを作ってみて、今動かなくなっているプロダクトとの待避を行うと問題が切り分けられると思います。
私の場合、本当にクリティカルだったのは core.php の CAKE_SECURITYをmiddle にしたことでした。こちらもご確認ください。
投稿者: Ryuji Kanbe | 2008年08月20日 11:24
日時: 2008年08月20日 11:24