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

Laravel应用中自定义Cookie在其他模块无法读取的问题排查

Laravel Cookie值在控制器中返回NULL的原因疑问

场景背景

我开发了一个简易表单,用户无需登录,仅填写姓名即可提交帮助对象及帮助方式的记录。由于用户会多次提交,我打算通过在永久Cookie中存储UUID的方式,实现不依赖登录态的用户分组记录。

实现过程与问题

我参考《Setting Cookie in Laravel Custom Middleware》的思路,编写了自定义中间件来设置UUID永久Cookie。中间件中可以正常设置并验证UUID已存在,但在表单控制器中读取该Cookie时,请求显示Cookie存在但值为NULL。

查阅资料后得知Laravel默认会加密Cookie,给uuid Cookie添加加密豁免后,就能正常读取其值了。我的应用不需要该Cookie的加密功能,保持豁免状态没问题,但我想弄明白出现这个问题的原因——我原本以为Laravel会自动处理Cookie的加密和解密流程!

相关代码

中间件配置(全局注册+加密豁免)

...
->withMiddleware(function (Middleware $middleware) {
    $middleware->append(SetUUIDMiddleware::class);
    $middleware->encryptCookies(except: ['uuid']);
})
...

自定义中间件代码

public function handle(Request $request, Closure $next): Response
{        
    if($request->hasCookie('uuid')) {
        return $next($request);    
    }

    $uuid = (string) Str::uuid();
    return $next($request)
        ->withCookie(cookie()->forever('uuid', $uuid));
}

现象对比

  • 未添加加密豁免时,控制器中$request的Cookie状态:
    未加豁免时Cookie值为NULL
  • 添加加密豁免后,控制器中$request的Cookie状态:
    添加豁免后Cookie值正常显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:05:55