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

Laravel 11下使用Jetstream添加登录信息存储Cookie的方法

在Laravel Jetstream登录后添加客户端可访问的Cookie

下面提供两种可靠的实现方式,均基于Jetstream依赖的Fortify认证系统处理:

方法一:监听登录成功事件

利用Laravel内置的登录事件,在用户登录成功后触发Cookie设置:

  1. 生成事件监听器
    运行Artisan命令创建监听器:
php artisan make:listener AddUserCookieOnLogin
  1. 编写监听器逻辑
    打开app/Listeners/AddUserCookieOnLogin.php,修改handle方法:
<?php

namespace App\Listeners;

use Illuminate\Auth\Events\Login;
use Illuminate\Support\Facades\Cookie;

class AddUserCookieOnLogin
{
    public function handle(Login $event)
    {
        $user = $event->user;
        // 设置客户端可访问的Cookie,这里以存储用户ID为例
        Cookie::queue(
            'user_identifier', // Cookie名称
            $user->id, // 存储的值
            60 * 24 * 7, // 有效期(分钟),这里设为7天
            null, // Cookie路径
            null, // Cookie域名
            false, // 是否仅HTTPS传输
            false, // 是否HttpOnly(设为false让客户端JS可访问)
            false, // SameSite属性,可按需改为'lax'或'strict'
        );
    }
}
  1. 注册监听器
    打开app/Providers/EventServiceProvider.php,在$listen数组中关联事件与监听器:
protected $listen = [
    // 其他已注册事件...
    \Illuminate\Auth\Events\Login::class => [
        \App\Listeners\AddUserCookieOnLogin::class,
    ],
];

方法二:自定义Fortify登录响应

直接重写Fortify的登录成功响应,在返回响应时附加Cookie:
打开app/Providers/FortifyServiceProvider.php,在boot方法中添加以下代码:

use Laravel\Fortify\Fortify;

public function boot()
{
    // 其他Fortify配置代码...

    Fortify::loginResponse(function ($request) {
        $user = auth()->user();
        // 跳转到登录后的默认页面,并附加Cookie
        return redirect()->intended(Fortify::redirects('login'))
            ->cookie(
                'user_identifier',
                $user->id,
                60 * 24 * 7,
                null,
                null,
                false,
                false,
                false
            );
    });
}

注意事项

  • 若需客户端JavaScript读取Cookie,必须将HttpOnly设为false,但请勿在Cookie中存储敏感信息(如密码、API密钥),仅存用户ID这类非敏感标识即可。
  • 若部署在HTTPS环境下,建议将Secure属性设为true,确保Cookie仅通过HTTPS传输。
  • 之前在JetstreamServiceProvider中添加中间件未生效,大概率是因为中间件在请求进入阶段执行,而Cookie需要在登录成功后的响应阶段设置,上述两种方法更贴合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:12:45