2015-07-10 138 views
4

我的问题是我点击注销链接后可以正常注销,但如果我点击返回按钮的浏览器,仍然能够看到实际上不应该的页面内容就我的auth中间件进程而言。 ? 我读我可以防止这种通过禁用缓存,但不认为这是做这所以最好的方法,我如何能在一个更好的办法让这个MY注销功能是如何在注销后阻止浏览器的后退按钮登录

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

我的路线为:

Route::get('logout','[email protected]'); 

thanx提前

+0

实际上,您看到的内容已缓存,尝试在返回使用后退按钮后刷新页面,您将被重定向。 –

+0

是的但是,当点击后退按钮时可以看到一些重要的数据,所以我必须防止这种情况。感谢您的建议,但。 – Diksha

+0

我不认为有一个正确的方法来做到这一点,因为这是一个客户端问题。或者这就是我从你的问题中了解到的 –

回答

10

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

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

如:

<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

这个解决方案似乎不起作用,浏览器后退按钮仍然移动到仪表板页面而不是登录页面:( – RJParikh

+0

将这些内容放在响应的标题中适用于我。 – Rimer

0

使用您的网页上(像一个ping服务),设置缓存假的顶部一个简单的AJAX请求,并把一些条款中它重定向访问者登录,如果没有通过认证。

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

0

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

history.pushState(null, null, document.URL); 
window.addEventListener('popstate', function() { 
    history.pushState(null, null, document.URL); 
});