После долгих тестов я обнаружил, что единственным решением является принудительное использование заголовка no store для ответа всех «защищенных» страниц, чтобы браузер не кэшировал его. В медленных сетях это может добавить небольшую задержку к загрузке страницы. Это влияет только на возвращаемый ответ, никакие ресурсы, загружаемые страницей, не затрагиваются. Их еще можно кэшировать.
Создайте новое промежуточное ПО с помощью 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
'nocache' => \App\Http\Middleware\NoCacheHeaders::class,
ПО промежуточного слоя 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');
});
});
Теперь после просмотра защищенных страниц, выхода из системы и возвращения обратно предыдущие страницы не раскрываются.
person
Snapey
schedule
26.01.2020