うるとらすーぱーえくすぷれす

技術を尽くして全力で遊ぶ

LaravelでのURL直打ち対策のヒント

Laravelは多機能だ。
そのせいで予期せぬ動作を起こすこともある。
Lravelで組んだシステムのトップページ以外に”URLを直打ち"された時の挙動がそれだ。
見事にハマったので考え方を書いておく。

【目次】

URLを直打ちされると起こる症状

ログイン画面から入った場合は必ずトップページに移動してもらいたいシステムで以下のことが起こった。

手順1.ユーザーがログイン前にトップページ以外にURLを直打ちして入ろうとする
手順2.ユーザーはログイン画面に飛ばされる
手順3.ユーザーがログインからログインする
手順4.ユーザーが最初にURLを直打ちしたページに遷移する

原因

Laravelフレームワーク本体の仕様が原因。
FoundationフォルダのAuthenticatesUsersが悪さをしていた。
この中のintended()は、URLを直打ちした場合に発火し、
ログイン後に専用の経路のようなものを勝手に作って直打ちしたURLへと画面を遷移させる。

その際にintended()url.instendedセッションにURLを格納し、redirectする。

対策

システムのLoginを管理しているControllerintended()を使用しているメソッドをオーバーライドする。
url.instendedセッションに飛ばしたいページのURLを入れる。
コントローラー名やメソッド名はシステムによって変更されていることがあるので各自調べる必要がある。

以上
 でわでわ ノシ