会话到期后,Laravel重定向无法正常工作

时间:2014-09-24 16:02:56

标签: php session redirect laravel login

目前,如果我在我的网络应用程序中闲置的时间足够长,我的会话就会过期。再次进行交互时,我收到一个错误屏幕,通知我会话超时,而不是将我重定向到主页。

在我的routes.php文件中,我使用的是:

Route::filter('authenticate', function() {
    if ( !Session::has('user') && Session::get('user')->id ) { // return true if user not logged
        return Redirect::to('/');
    }
});

我的逻辑错了吗?

1 个答案:

答案 0 :(得分:0)

你的表达永远不会评估为真。你基本上用英语说这个:

  

如果使用“User”键的会话中没有值,并且具有user键的会话值具有id,则执行...

有一个会话值的密钥为'User',但你不能双管齐下。我想你想说出这样的话:

if ( !Session::has('user') || !Session::get('user')->id )

这将在两种情况下执行重定向:

  1. 如果“用户”键下方没有会话值,
  2. 当'user'会话值中的值的id参数计算为false
相关问题