セッション切れ時に、POSTするアクションを叩いた時さ。。。
MethodNotAllowedHttpException
↑このエラーが起きたんだ。。。
この原因は、、、
httpリクエスト時に発生する。
ルーティングに該当するURLが存在しない。
ということなんだね。
いやいや、ルーティングファイルに定義してあるやん!!!
って思うんだけど、セッション切れ時のリクエストの流れを抑えていこう。
セッション切れしたときのざっくりの流れ
結論からいうと、リダイレクトが原因でこの現象が起きている、どういうことか?
- セッション切れ時に、POSTするアクションを叩く。
- フレームワーク側でセッション切れなので、ログイン画面へ遷移させる
- ログインする
- ログイン後処理で、セッション切れ前のリクエスト情報を拾って、そのルーティングにリダイレクトする
そう、4で死ぬのだ。
なぜ死ぬ?
それは、リダイレクトしているからだ。
そう、なにを隠そう当たり前なんだけど、リダイレクトすると、METHODが、"GET"になるんだよね。
「なんでやねん!!」
確かに、そう思うけど、
ユーザーからすれば何処にリダイレクトされたかも分からないようなリソースに、POSTデータを勝手に送るなんて、、、そっちのほうが
「なんでやねん!!」
というかんじですね。
じゃあ、どうするねん。
ケースバイケースかもですけど、
とりあえず、各プロジェクトのLoginコントローラなるものの、ログイン後処理で、
一律遷移させるページを決めて、リダイレクトさせるのがいいのかなと思います!!