Laravel Auth :: logout()失败

时间:2014-08-10 17:22:38

标签: php authentication laravel laravel-4 laravel-routing

我只是在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'
    ));

  });

4 个答案:

答案 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)

这是正常行为。浏览器“记住”已加载的页面,并且当您点击后退按钮时不会完全重新加载它们,因此即使您已正确注销,您仍将看到仅限身份验证的页面。但是,对您的应用程序的受限页面发出的任何请求现在都应该失败,因为即使浏览器显示您在登录时呈现的代码,它也无法在没有您干预的情况下进行身份验证。这很容易验证:

  1. 登录
  2. 退出
  3. 点击后退按钮
  4. 刷新页面
  5. 现在应该提示您登录而不是查看上一页。

答案 3 :(得分:0)

@Spoofy,这是浏览器缓存的问题, 通读this链接来解决此问题