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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:25:17