Шифрование истории в Inertia
Давайте рассмотрим ситуацию, когда на экране зарплат или медицинских записей лежат данные, которые нельзя оставлять в открытом виде в истории браузера. После выхода или смены пользователя кнопка «назад» не должна мгновенно вернуть чужой снимок страницы.
Шифрование истории включают
на стороне Laravel: перед
ответом вызывают метод
encryptHistory. Клиент
перед записью в историю
шифрует данные страницы
через Crypto браузера
и хранит ключ в session storage.
Без ключа снимок прочитать
нельзя, и Inertia снова
обратится к серверу.
Давайте опишем экран отчёта и включим шифрование для него:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/reports', function () {
Inertia::encryptHistory();
return Inertia::render('Reports/Index', [
'summary' => 'Q1 results',
]);
});
?>
Давайте выведем сводку в компоненте страницы:
<script setup>
defineProps({
summary: String,
})
</script>
<template>
<h1>Reports</h1>
<p>{{ summary }}</p>
</template>
На странице бонусов работника Mark включите шифрование истории для ответа сервера, чтобы снимок этой страницы в браузере хранился зашифрованным.