Laravel中Auth::user()->id未登录时触发错误的解决方法
解决Laravel未登录状态下
Auth::user()->id判断报错问题 你的问题核心在于:未登录时Auth::user()返回null,直接调用null->id会触发属性访问错误,而isset(Auth::user()->id)是先执行Auth::user()->id再判断是否存在,这时候已经报错了,所以无效。
可以用以下几种单条件判断解决:
使用
Auth::check()方法:这是Laravel官方推荐的判断用户是否登录的方法,返回布尔值,登录时为true,未登录为false。写法如下:@if(Auth::check()) // 这里可以安全使用 Auth::user()->id 当前用户ID:{{ Auth::user()->id }} @endif使用PHP可选链操作符(PHP 8.0+):如果你的项目用的是PHP 8及以上版本,可以用
?->避免null属性访问错误,配合isset判断:@if(isset(Auth::user()?->id)) // do something @endif可选链操作符会在
Auth::user()为null时直接返回null,不会继续访问->id,因此不会报错。直接使用
Auth::id()方法:Laravel提供了Auth::id()快捷方法,登录时返回用户ID,未登录时返回null,可以直接判断:@if(Auth::id()) // do something 当前用户ID:{{ Auth::id() }} @endif或者用
isset(Auth::id()),效果一致,因为未登录时Auth::id()为null,isset会返回false。
其中Auth::check()是兼容性最好、最直观的写法,推荐优先使用。
内容的提问来源于stack exchange,提问作者Hellodas33
相关产品推荐
相关产品推荐

