我只是在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'
));
});
答案 0 :(得分: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');
});
答案 1 :(得分:0)
如果用户已通过简单地输入if-else语句进行身份验证,则可以将用户重定向远离登录页面!
答案 2 :(得分:0)
这是正常行为。浏览器“记住”已加载的页面,并且当您点击后退按钮时不会完全重新加载它们,因此即使您已正确注销,您仍将看到仅限身份验证的页面。但是,对您的应用程序的受限页面发出的任何请求现在都应该失败,因为即使浏览器显示您在登录时呈现的代码,它也无法在没有您干预的情况下进行身份验证。这很容易验证:
现在应该提示您登录而不是查看上一页。
答案 3 :(得分:0)
@Spoofy,这是浏览器缓存的问题, 通读this链接来解决此问题