redirectのバグ?仕様?
認証機能の続き。
現在cakePHPと別のブログシステムとを連携してプログラムを書いている。ブログそのものに認証機能を実装して(会員専用ページのような感じ)、会員管理をcakePHPで実装した。ログインの状態はセッションで持ち回り、ログイン画面の表示はブログ側で実装してある。
ここでcakePHPでセッションの状態を確認し、ログインが確認できなかったらブログのトップページ(認証が必要)へリダイレクトする処理を実装しようと考えた(が、ここではまった)。
cakePHPのコントローラーにはredirectメソッドが用意されている。このメソッドもちょっと曲者でリダイレクト後にexitしてない、ってことでウェブ上には多くの不満の声がある。
そこはそもそも注意していたのだが・・・このリダイレクトメソッド、外部のURLには遷移できない。cakePHPのルートディレクトリ以下でしか動作しないっぽい。なくなくソースを読んでみたけど、redirectメソッドの最後のほうはこんな記述。
header(‘Location: ‘ . FULL_BASE_URL . $url);
絶対外には出れないよ。contoroller.phpを見渡してみたけど、他に遷移できそうなメソッドが見当たらない・・・。外には出れないわけね。