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

Laravel中@csrf及csrf_field()生成空值,已尝试方案无效求助

Laravel CSRF令牌值为空问题排查

问题情况

在Blade模板里用@csrf生成的代码是:

<input type="hidden" name="_token" value="">

试过{!! csrf_field() !!}和{{ csrf_field() }}也一样,令牌值始终为空,而且相关常规解决方案没用。当前app/Http/Kernel.php的web中间件组配置如下:

'web' => [
  \App\Http\Middleware\EncryptCookies::class,
  \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
  \Illuminate\Session\Middleware\StartSession::class,
  \Illuminate\View\Middleware\ShareErrorsFromSession::class,
  \App\Http\Middleware\VerifyCsrfToken::class,
  \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

可行排查方向

  • 确认路由归属web中间件:确保你的路由是在Route::web()分组下定义的,或者手动绑定了web中间件。路由没走web中间件的话,Session不会启动,自然生成不了CSRF令牌。
  • 清理各类缓存:执行以下命令清除缓存,避免配置缓存导致中间件加载异常:
    php artisan cache:clear
    php artisan config:clear
    php artisan route:clear
    
  • 检查Session驱动:查看.env文件里的SESSION_DRIVER,别用array(仅测试用,不持久化Session),换成file或database这类有效驱动。
  • 验证中间件顺序:当前中间件顺序没问题,但可以试试把StartSession移到更靠前的位置,保证Session在视图渲染前完全初始化。
  • 核对Cookie配置:确认.env中APP_URL和当前访问域名一致,SESSION_DOMAIN设置正确,避免Cookie无法存储导致Session启动失败。
  • 手动生成令牌测试:在控制器里手动生成令牌并传给视图:
    return view('你的视图名', ['csrfToken' => csrf_token()]);
    
    然后在视图里用:
    <input type="hidden" name="_token" value="{{ $csrfToken }}">
    
    看看能不能拿到令牌,以此判断是视图渲染的问题还是Session初始化的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:47:31