
こんにちは。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」の最新記事

TerraformによるLinodeインスタンス新規作成サンプル
【Fingerprint】CircleCIがSSHできない問題解決
M1 Mac(2021)でanyenv/phpenvの初期設定!