Auth :: logout()优先于所有代码

时间:2016-04-30 13:13:56

标签: laravel laravel-5.2

我正在开发一个需要用户在线状态的项目,所以我只是添加一个on auth.logout事件来监听注销并将状态设置为false以便离线。如果记录,$ event->用户值为null。所以我尝试检查在我的项目中调用Auth :: logout()的函数,并且由于某种原因,代码在所有其他代码之前被触发。有人有任何想法吗?

此处仍有用户模型数据。

protected function logout()
{
    $user = Auth::user();
    $user->online = 0;
    $user->save()
    //Auth::logout();

    return redirect()->intended(route('page.login'));
}

但这里是$ user = null

protected function logout()
{
    $user = Auth::user(); //$user = null
    $user->online = 0;
    $user->save();
    Auth::logout(); //Is this taking priority over all code somehow ?

    return redirect()->intended(route('page.login'));
}

1 个答案:

答案 0 :(得分:1)

绝对没有办法让代码跳跃优先。如果可能的话,软件开发将是巧合和魔术的一个不可能的壮举 - 比现在更多。

该代码执行两次的可能性更大。尝试设置控制器逻辑,以便在$ user为null时它可以起作用。我打赌logout()多次运行的钱。

protected function logout()
{
    $user = Auth::user();

    if ($user)
    {
        $user->online = 0;
        $user->save();
        Auth::logout();
    }

    return redirect()->intended(route('page.login'));
}