Laravel-尝试在登录两次时获取非对象的属性


Laravel - Trying to get property of non-object when logging in twice

不确定这里发生了什么。

如果在我的一个控制器中有这个作为我的登录功能

protected $user;
public function __construct()
{
    $this->user = Auth::user();
}
public function postLogin()
{
    if( Auth::attempt([
        'username'=>Input::get('username'),
        'password'=>Input::get('password')
    ]))
    {
        return $this->user->username;
    }
    else
    {
        return Redirect::to('login');
    }
}

这是我的注销

public function getLogout()
{
    Auth::logout();
    return Redirect::to('login');
}

如果我登录一次,它就会显示用户名,就像我想要的那样。如果我注销并再次登录,我会得到

ErrorException (E_UNKNOWN)
Trying to get property of non-object

然后,如果我注销并重新登录,它会再次工作,直到我再次注销。有什么关于这里发生了什么的想法吗?

我认为问题都在:

$this->user = Auth::user();

return $this->user->username;

在构造函数中,你应该做这样的事情:

if (Auth::check()) {
   $this->user = Auth::user();
}

但登录时不应该使用:

return $this->user->username;

但是

return Auth::user()->username;