我在Laravel 5.8上有一个应用程序。每次用户在应用程序上停留很长时间,就会出现此错误
试图获取非对象的属性“名称”(视图:C:\ xampp \ htdocs \ jairusreport \ resources \ views \ layouts \ header.blade.php)
几天来,我一直没有遇到一个特定的错误,这确实浪费了我的时间。我已经完成了以下错误的屏幕截图。
Auth / LoginController
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/dashboard';
protected function hasTooManyLoginAttempts ($request) {
$maxLoginAttempts = 2;
$lockoutTime = 5; // 5 minutes
return $this->limiter()->tooManyAttempts(
$this->throttleKey($request), $maxLoginAttempts, $lockoutTime
);
}
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function logout()
{
$user = Auth::user();
Log::info('User Logged Out. ', [$user]);
Auth::logout();
Session::flush();
return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/login');
}
}
问题的原因是什么。我该怎么解决这个问题。
答案 0 :(得分:1)
可能有两件事
数据库中没有名称为name
或者您尚未登录。
用于检查用户是否登录
if(Auth::check())
{
echo Auth::user()->id;
}
检查以上条件,不要忘记在用户模型中添加
class user
{
protected $fillable = [
'name'
];
}
答案 1 :(得分:0)
Laravel使用会话来跟踪经过身份验证的用户。会话可能正在超时,而用户正在注销。
为避免这种情况在您的视图中引起问题,建议您进行空检查Auth::user()
或将Auth::check()
与刀片if块一起使用。
如果要修改SESSION_LIFETIME,请查看config/session.php