【CakePHP】beforeRedirectに関する挙動について

cake-logo先日、こちら のエントリで話題が出て、チケットも投げてみたのですが、invalidになってしまったのでちょっと記事として書いておきますね。

簡単に書きますと、複数の「beforeRedirectを持ったコンポーネント」をコントローラ内に設置してredirectを呼んだ場合、urlを含む各パラメータが「一番最後に呼ばれたbeforeRedirectの値」になってしまうという問題があります。
つまり、Ktai Libraryを設置し、もしiMODE端末でアクセスされた場合にsidをくっつけるとして、他のbeforeRedirectを含むコンポーネントを設置した場合、場合によってはセッションが切れてしまう問題が発生してしまうのです。

オフィシャルの見解として、1.2ではそのようなパターンは想定外とのことで、1.3に向けての拡張として提案して欲しい、ということでした。まあ、beforeRedirectを必要とするコンポーネントはそうないでしょうから、このような現象は一般的にはそんなに起きないでしょうけど、Ktai Libraryとしては不具合の発生しそうな方法をとることが出来ませんから、今回のapp_controllerで対応したことに関しては結果として良かったと思います。

まあ今回分かったことは、1.2でbeforeRedirectを使う場合は少し注意がいる、ということですね。


“【CakePHP】beforeRedirectに関する挙動について” への2件の返信

  1. Ktai Library 0.1.0 リリースお疲れ様です。
    beforeRedirectの件は結局invalidでしたね・・・

  2. まあ、まるっきり却下されたわけではないので、良しとしましょう。
    確かに、URLはああなる方がよいのですが、それ以外のパラメータはどのみちどれかの値にしなければならず、じゃあどの値にするべきなのか? というところで議論になりそうな気がします。少し間を置いた方が良い問題かもしれません。

コメントは受け付けていません。