2016-10-31 6 views
0

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

AuthController.php 

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

UsersController.php (функция, которая возвращает домой вид домашнего)

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

web.php (маршрут)

Route::get('/home', ['middleware' => 'auth', 'as' => 'home','uses' => '[email protected]']); 
+0

Вы пытались использовать промежуточное программное обеспечение 'web' вместо' auth'? –

+0

Нажимая назад, вы можете просто просмотреть страницу или перейти на страницу тоже? – smartrahat

+0

Мне показалось странным, что вы используете как промежуточное ПО, так и проверку '\ Auth :: user()' в действии вашего контроллера. – apokryfos

ответ

0

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

Вы можете использовать немного 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"); 

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

0

Включите <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"> 
0

В функции выхода из системы, перенаправлять как это:

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

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

Смежные вопросы