You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel布局页获取当前登录用户报错问题求助

解决Laravel布局页未登录时访问Auth::user()->name报错的问题

这个问题我之前也碰到过,本质是未登录状态下Auth::user()返回的是null,直接访问->name自然会抛出"Trying to get property 'name' of non-object"错误——毕竟你的layout.blade.php不管用户有没有登录都会被加载,退出登录后再访问登录页面时,布局页里的这段代码就会触发错误。

给你几个实用的解决办法:

方法1:先判断用户是否登录再输出名称

用Auth::check()(或者辅助函数auth()->check())先验证用户是否已登录,只有登录状态才输出用户名,未登录时可以显示登录入口或其他提示:

@if(Auth::check())
    {{ Auth::user()->name }}
@else
    <a href="{{ route('login') }}">登录</a>
@endif

方法2:使用可选链操作符(简洁版,需PHP 8+、Laravel 8+)

如果你的项目满足PHP 8及以上、Laravel 8及以上的版本要求,可以用PHP的可选链操作符?->,当Auth::user()为null时,会直接返回null而不触发错误:

{{ Auth::user()?->name }}

这种写法非常简洁,适合不需要显示未登录提示的场景。

方法3:使用auth()辅助函数的写法

和方法1逻辑一致,只是用更简洁的auth()辅助函数替代Auth门面:

@if(auth()->check())
    {{ auth()->user()->name }}
@else
    <span>请登录</span>
@endif

选其中一种方法替换你原来的{{Auth::user()->name}}代码,就能解决退出后再登录时的报错问题了。

内容的提问来源于stack exchange,提问作者Prathamesh Jaisingpure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:17:52