redirectのバグ?仕様?
2007/03/31 | cakePHP
認証機能の続き。
現在cakePHPと別のブログシステムとを連携してプログラムを書いている。ブログそのものに認証機能を実装して(会員専用ページのような感じ)、会員管理をcakePHPで実装した。ログインの状態はセッションで持ち回り、ログイン画面の表示はブログ側で実装してある。
ここでcakePHPでセッションの状態を確認し、ログインが確認できなかったらブログのトップページ(認証が必要)へリダイレクトする処理を実装しようと考えた(が、ここではまった)。
cakePHPのコントローラーにはredirectメソッドが用意されている。このメソッドもちょっと曲者でリダイレクト後にexitしてない、ってことでウェブ上には多くの不満の声がある。
そこはそもそも注意していたのだが・・・このリダイレクトメソッド、外部のURLには遷移できない。cakePHPのルートディレクトリ以下でしか動作しないっぽい。なくなくソースを読んでみたけど、redirectメソッドの最後のほうはこんな記述。
header(‘Location: ‘ . FULL_BASE_URL . $url);
絶対外には出れないよ。contoroller.phpを見渡してみたけど、他に遷移できそうなメソッドが見当たらない・・・。外には出れないわけね。
2007/06/17 at 9:05 PM
原因なのかどうなのか分かりませんが、前回beforeFilterについて投稿したものですが、beforeFilterが重いのではなく、その中に記述されていた$this->redirect(-)が動作しないことが分かりました。
それで、そのことについて調べたらこのサイトに辿りついてしまいました。
上記のものと同等のシステムを作ろうとしていて、セッションにがない場合、認証画面に遷移させようとしていましたが、これがバグということで行き詰ってしまいましたね。
何かしらの対処策があればいいのですが・・・
2007/06/17 at 11:15 PM
動作しないことないでしょ。私は全然行き詰ってないです。
マニュアルとかソースコードとか読んでます?。少なくともcakePHPのウェブアプリで完結しているのなら、何の問題もないと思うけど。