После многих испытаний я обнаружил, что единственное решение состоит в том, чтобы принудительно устанавливать заголовок "не хранить" в ответе всех "защищенных" страниц, чтобы браузер не кэшировал его. В медленных сетях это может добавить небольшую задержку к загрузке страницы. Это влияет только на возвращенный ответ, ни один из ресурсов, загруженных страницей, не затрагивается. Их все еще можно кэшировать.
Создайте новое промежуточное ПО с php artisan make:middleware NoCacheHeaders
Редактируйте, как указано ниже
<?php
namespace App\Http\Middleware;
use Closure;
class NoCacheHeaders
{
/**
* Add set no caching HTTP headers.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|array $options
* @return \Symfony\Component\HttpFoundation\Response
*
* @throws \InvalidArgumentException
*/
public function handle($request, Closure $next, $options = [])
{
$response = $next($request);
$response->header('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT');
$response->header('Cache-Control', 'no-cache, must-revalidate, no-store, max-age=0, private');
return $response;
}
}
Добавьте это промежуточное ПО в \App\Http\Kernel.php
в routeMiddleware
section
'nocache' => \App\Http\Middleware\NoCacheHeaders::class,
middleware nocache
теперь можно добавлять в группы или отдельные маршруты. Я добавляю ко всем защищенным маршрутам auth
//protected routes (must be logged in)
Route::middleware(['auth','nocache'])->group(function(){
Route::get('/home', 'HomeController@index')->name('home');
Route::name('admin.')->group(function () {
Route::resource('admin/users','Admin\UserController');
Route::resource('admin/roles','Admin\RoleController');
});
});
Теперь, после просмотра защищенных страниц, выхода из системы и возврата назад, предыдущие страницы не отображаются.