我正在开发一个需要用户在线状态的项目,所以我只是添加一个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'));
}
答案 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'));
}