【问题标题】:Laravel redirection not working after session expires会话过期后 Laravel 重定向不起作用
【发布时间】:2014-11-19 05:16:15
【问题描述】:

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

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

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

我的逻辑错了吗?

【问题讨论】:

    标签: php session redirect laravel login


    【解决方案1】:

    您的表达式永远不会为真。你基本上是用英语说的:

    如果key为'User'的session中没有value,而key为user的session值有id,则做...

    要么有一个会话值的键为'User',但你不能同时拥有它。我想你想说这样的话:

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

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

    1. 当'user'键下没有会话值时,
    2. 当“用户”会话值中的值的 id 参数评估为 false 时

    【讨论】:

    • 由于某种原因,您的解决方案在登录时不断重定向,但它确实适用于 if ( !Session::has('user') )
    • 如果用户键中的条目在 id 属性中没有评估为 true 的值,这将是有意义的
    猜你喜欢
    • 1970-01-01
    • 2017-09-02
    • 2015-10-08
    • 2021-08-25
    • 1970-01-01
    • 2021-11-29
    • 2016-12-01
    • 2017-03-15
    相关资源
    最近更新 更多