Очистка истории в Inertia
Пусть человек просмотрел личный кабинет с заказами, затем вышел из аккаунта и оказался на главной. Кнопка «назад» в браузере по-прежнему может показать экран кабинета из снимка истории, хотя сессия на сервере уже закрыта.
Метод clearHistory на стороне
Laravel сообщает клиенту Inertia,
что после ответа нужно сменить
ключ шифрования в хранилище
сессии браузера. Старые записи
истории перестают расшифровываться,
и при попытке «назад» клиент
запрашивает страницу заново
у сервера вместо мёртвого снимка.
Давайте опишем выход и вызовем очистку перед ответом:
<?php
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::post('/logout', function () {
Auth::logout();
Inertia::clearHistory();
return Inertia::render('Home');
});
?>
Давайте на экране кабинета отправим форму выхода на этот адрес:
<script setup>
import { Form } from '@inertiajs/vue3'
</script>
<template>
<h1>Account</h1>
<Form action="/logout" method="post">
<button type="submit">Log out</button>
</Form>
</template>
После выхода работника Nina с экрана смен сделайте так, чтобы «назад» не показывал расписание без нового запроса к серверу.