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

咨询Laravel Jetstream Inertia中$page.props.user的传递位置

Laravel 9+Inertia+Vue3+Jetstream中$page.props.user的传递位置

环境为Laravel 9、Inertia、Vue 3、Jetstream,在AppLayout组件中通过$page.props.user调用用户信息。请问该用户信息在Laravel的哪个位置进行传递?已查看HandleInertiaRequests,但未找到相关内容。

这个用户信息是由Jetstream的Inertia服务提供者自动注入的,具体位置在vendor/laravel/jetstream/src/Providers/InertiaServiceProvider.php文件中。

Jetstream的这个服务提供者会在boot方法里注册一个Inertia共享数据的回调,将认证用户信息通过Inertia::share()方法传递给前端,核心代码示例如下:

public function boot()
{
    $this->configurePermissions();

    Inertia::share([
        'auth' => function () {
            return [
                'user' => Auth::user() ? [
                    'id' => Auth::user()->id,
                    'name' => Auth::user()->name,
                    'email' => Auth::user()->email,
                    // 其他默认携带的用户字段
                ] : null,
            ];
        },
        // 其他共享数据
    ]);
}

你在前端看到的$page.props.user,实际是从共享的auth对象中获取的——Jetstream生成的前端AppLayout组件会通过usePage()钩子提取auth.user,所以模板里能直接调用$page.props.user。

如果需要自定义用户数据的内容,你可以在项目自己的HandleInertiaRequests中间件的share方法里覆盖或补充信息,示例代码:

// app/Http/Middleware/HandleInertiaRequests.php
public function share(Request $request)
{
    return array_merge(parent::share($request), [
        'auth.user' => function () {
            return Auth::user() ? Auth::user()->only('id', 'name', 'email', 'your_custom_field') : null;
        },
    ]);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:30:25