📖

【Laravel】ブラウザバック対策

に公開

困っていたこと

アプリケーションからログアウト直後にブラウザバックするとログイン状態の画面に戻れてしまっていた。

対策方法

ログアウト時に遷移する画面(/login)でブラウザ履歴を上書きするスクリプトを実行することでブラウザバックをできないようにした

具体的なコード

  1. ログアウト処理時にセッションにフラグjust_logged_outを設定
public function logout(Logout $logout): void
    {
        $logout();
        session()->flash('just_logged_out', true);
        $this->redirect('/login', navigate: true);
    }
  1. /loginに遷移したときにセッションにjust_logged_outがあれがブラウザ履歴を上書きするスクリプトを実行
  @if(session('just_logged_out'))
  <script>
    window.history.pushState(null, '', '/login');
    window.onpopstate = function() {
      window.location.href = '/login';
    };
  </script>
  @endif

Discussion