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

Laravel+Inertia+Vue3中Inertia::share的Auth闭包未执行问题

问题排查:Inertia::share中auth闭包未执行,返回完整用户数据
  • 其他服务提供者覆盖了auth共享配置
    Laravel的Breeze、Jetstream这类Inertia脚手架默认会在InertiaServiceProvider中通过Inertia::share传递完整的用户模型。如果你的AppServiceProvider的boot方法执行顺序早于InertiaServiceProvider,后者的共享配置会直接覆盖你定义的auth闭包。
    解决方法:

    • 将你的auth共享逻辑移到InertiaServiceProvider中,替换默认的auth配置;
    • 或在config/app.php里调整服务提供者顺序,把App\Providers\AppServiceProvider放在App\Providers\InertiaServiceProvider之后。
  • 闭包定义存在语法/上下文问题
    检查AppServiceProvider中的代码是否存在上下文错误,比如错误使用箭头函数导致无法正确获取auth()实例。
    错误示例(箭头函数在部分PHP版本中可能存在上下文绑定问题):

    Inertia::share('auth', fn() => [
        'user' => auth()->user()?->only(['id', 'name'])
    ]);
    

    改用普通闭包的正确写法:

    Inertia::share('auth', function () {
        return [
            'user' => auth()->user() ? auth()->user()->only(['id', 'name']) : null,
        ];
    });
    
  • 配置缓存未更新
    如果之前执行过php artisan config:cache,服务提供者的代码变更不会生效,旧的缓存配置仍在运行。
    解决方法:执行以下命令清除缓存后重启服务:

    php artisan config:clear
    php artisan cache:clear
    
  • Inertia中间件存在自定义共享逻辑
    检查App\Http\Middleware\HandleInertiaRequests中间件的share方法,若里面手动添加了auth用户的共享代码,会直接覆盖服务提供者中的配置。修改该方法里的auth返回字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:57:14