Laravel Auth::logout() 失败
Posted
技术标签:
【中文标题】Laravel Auth::logout() 失败【英文标题】:Laravel Auth::logout() Fail 【发布时间】:2014-10-03 13:35:19 【问题描述】:我只是在 Laravel 4 中创建一个基本应用程序,但我遇到了一个小问题。
我的注销功能无法正常工作……它工作正常,但是:
当用户登录并单击注销按钮时,我将注销用户,但是当我单击浏览器的后退按钮时,我会返回登录页面。
我正在使用Auth::logout()
。
这个方法是终止会话还是对浏览器缓存有任何作用?
我该如何解决这个问题?
我的注销功能:
public function getLogout()
if(Auth::check())
Auth::logout();
return Redirect::route('home');
我的路线:
/*
* Authenticated users
*/
Route::group(array('before' => 'auth'), function()
Route::get('success', array(
'as' => 'success',
'uses' => 'AccountController@getSuccess'
));
Route::get('signout', array(
'as' => 'signout',
'uses' => 'AccountController@getLogout'
));
);
【问题讨论】:
【参考方案1】:这是浏览器缓存问题。
试试...
App::after(function($request, $response)
$response->headers->set('Cache-Control','nocache, no-store, max-age=0, must-revalidate');
$response->headers->set('Pragma','no-cache');
$response->headers->set('Expires','Fri, 01 Jan 1990 00:00:00 GMT');
);
【讨论】:
【参考方案2】:@Spoofy,这是浏览器缓存的问题, 阅读this 链接以解决此问题
【讨论】:
【参考方案3】:这是正常行为。浏览器“记住”加载的页面,并且在您点击返回按钮时不会完全重新加载它们,因此即使您已正确注销,您仍然会看到仅验证页面。但是现在对您应用的受限页面发出的任何请求都应该失败,因为即使浏览器向您显示在您登录时呈现的代码,它也无法在没有您干预的情况下进行身份验证。这很容易验证:
-
登录
注销
点击返回按钮
刷新页面
现在应该提示您登录,而不是查看上一页。
【讨论】:
tbuteler 没错!用户正在注销并且可以返回,但是当他尝试执行诸如添加联系人之类的操作时,他会被重定向到登录表单:)。谢谢! 如何设置,注销后,页面刷新?为了节省时间,这个流程?【参考方案4】:如果用户已经通过身份验证,您可以将用户从登录页面重定向,只需使用 if-else 语句进行检查!
【讨论】:
那不行,因为浏览器在后退按钮上仍然保持前一个浏览器的“状态” 不是真的!除非你在谈论 Opera Web Browser。 Chrome、Mozilla 刷新以前的页面,这就是您应该检查用户是否经过身份验证的地方。 所以 Richie 应该检查我的成功页面中的 auth::check() 是否到? 我听不懂你在说什么英语 @Richie:见上面 tbuteler 的回答,这就是我要说的。以上是关于Laravel Auth::logout() 失败的主要内容,如果未能解决你的问题,请参考以下文章