laravel 5 уничтожить сессии

У меня есть проект laravel, где, когда я выхожу из пользователя, я иду на экран входа в систему, но при возвращении на предыдущую страницу в браузере я могу получить доступ к домашней странице, даже если я вышел из системы. Как это исправить?

AuthController.php

  public function logout()
{
  Auth::logout();
  Session::flush();
  return redirect()->route('login');
}
}

UsersController.php (функция home, которая возвращает представление home)

public function home()
{
  if (Auth::user())
  {
    return view('users.home');
  }
    return redirect()->route('login');
}

сеть.php (маршрут)

Route::get('/home', ['middleware' => 'auth', 'as' => 'home','uses' => 'UsersController@home']);

3 ответа

  1. Проблема в том, что кнопка назад ничего не запрашивает с сервера. Он просто загружает последнее известное состояние страницы из кэша.

    Вы можете использовать этот маленький кусочек JavaScript, чтобы очистить историю кнопок браузера:

     history.go(-history.length);   //Go to the first page in the back history.
     window.location.href = '/login'; // Overwrite it with the page to actually go to.
    

    Конечно, это может также раздражать пользователя, который будет терять свою историю сеансов просмотра.

    Альтернативой, которая может работать (хотя я не пробовал), является указание браузеру не кэшировать страницы, требующие входа, установив следующий заголовок на этих страницах:

    header("Cache-Control", "no-cache, no-store, must-revalidate");
    

    Однако это предотвратит кэширование любых страниц, которые могут повлиять на производительность.

  2. Положите <head>в Вашей странице входа в систему.Это очистит кэш и предотвратит обратную страницу.

    <meta http-equiv="cache-control" content="private, no-store, no-cache, must-revalidate, max-age=0">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="expires" content="0">
    
  3. В вашей функции выхода перенаправление, как это:

    return redirect()->to(Url::previous());
    

    Теперь, когда вы нажимаете кнопку назад, предыдущая страница больше не кэшируется,и вы просто снова получаете страницу входа.