📖
【Laravel】ブラウザバック対策
困っていたこと
アプリケーションからログアウト直後にブラウザバックするとログイン状態の画面に戻れてしまっていた。
対策方法
ログアウト時に遷移する画面(/login
)でブラウザ履歴を上書きするスクリプトを実行することでブラウザバックをできないようにした
具体的なコード
- ログアウト処理時にセッションにフラグ
just_logged_out
を設定
public function logout(Logout $logout): void
{
$logout();
session()->flash('just_logged_out', true);
$this->redirect('/login', navigate: true);
}
-
/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