注销后如何防止浏览器的后退按钮登录

问题描述 投票:4回答:3

我的问题是我可以在点击注销链接后正确注销,但如果我点击浏览器的后退按钮,仍然能够看到实际上不应该看到我的身份验证中间件进程的页面内容。我读过我可以通过禁用缓存来防止这种情况但是不认为这是最好的方法,所以我怎么能以更好的方式做到这一点?我的登出功能是

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

我的路线是:

Route::get('logout','Homecontroller@logout');

提前致谢

laravel laravel-4 laravel-5 laravel-3
3个回答
10
投票

这个问题与浏览器有关。浏览器缓存页面内容,并在您按下后退按钮时将缓存的内容提供给用户。

在需要用户登录的页面上设置缓存控制元标记。这样您就告诉浏览器不要缓存它。

E.g:

<meta http-equiv="cache-control" content="private, max-age=0, no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">

0
投票

在页面顶部使用简单的AJAX请求(类似于ping服务),设置缓存false并在其中放置一些子句以将访问者重定向到登录(如果未经过身份验证)。

因此,在注销后,如果您尝试返回,即使主页面被浏览器缓存,它仍会尝试在页面加载时加载AJAX请求。由于用户身份验证不再有效,因此会将用户重定向回登录页面。


0
投票

添加此javascript代码,它将阻止重定向。

history.pushState(null, null, document.URL);
window.addEventListener('popstate', function () {
    history.pushState(null, null, document.URL);
});
© www.soinside.com 2019 - 2024. All rights reserved.