こんにちは。iQeda [@iQeeeda] です。
- A アカウントでログインして
/hoge
ページに滞在する - 長時間滞在したので A はセッションタイムアウトする (トークン期限切れ)
- 画面をリロードするとログイン画面にリダイレクトされる
- B アカウントでログインする
- A が滞在していた
/hoge
に遷移してしまう
他のアカウントでログインしたにも関わらず、デフォルトのリダイレクト処理が効かない場面に遭遇しました。これは vendor/laravel/framework/src/Illuminate/Routing/Redirector.php
の下記処理が原因でした。
public function intended($default = '/', $status = 302, $headers = [], $secure = null) { // セッションの url.intended が残っていると $default よりそっちの URL を優先してしまう $path = $this->session->pull('url.intended', $default); return $this->to($path, $status, $headers, $secure); }
ログイン画面のコントローラでセッション削除すれば OK です!
public function showLoginForm() { // セッションタイムアウトしたとき、前回 URL 情報がセッションに残ってしまう // 別アカウントでログインし直した場合もその URL を見に行こうとしてしまうので削除する if (Session::has('url.intended')) { Session::forget('url.intended'); } return view('auth.login'); }
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「Develop」の最新記事