【问题标题】:Laravel 5.2 TokenMismatchExceptionLaravel 5.2 TokenMismatchException
【发布时间】:2016-02-27 19:03:00
【问题描述】:

我在 Laravel 5.2 中的 POST 请求遇到问题。
在我的路线文件中,我在每条路线上都使用了网络中间件。在我的表单中我也有 csrf_field() 但是当我尝试发出 POST 请求时,它给了我的 TokenMismatchException

【问题讨论】:

  • 发布导致问题的代码行以及错误标题,至少让人们有机会提供帮助
  • VerifyCsrfToken.php 第 67 行中的 TokenMismatchException:
  • 你必须提供一些代码,没有我们如何帮助诊断?
  • 也许通过向我们展示您发布的表单以及实际发送到 Laravel 的内容(您可以从 Chrome 和 Firefox 的开发人员选项卡中访问),我们可以为您提供帮助。
  • 您的会话是否正常工作?您的表单中有_token 字段吗?

标签: php laravel token


【解决方案1】:

GoTo : App->Http->Kernel.php

protected $middlewareGroups = [
    '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,
    ],

注释最后一行:

  // App\Http\Middleware\VerifyCsrfToken::class,

但是这个解决方案只是为了逃避 csrf 令牌验证,不是一个好的选择。

【讨论】:

  • 由于浏览器缓存,有时会显示令牌不匹配。因此,请在私有模式下尝试或清除您的应用程序的缓存。
【解决方案2】:

尝试在 html 文件的正文中添加这一行:

<meta name="_token_" content="{{ csrf_token() }}"> 

【讨论】:

    【解决方案3】:

    有一个助手可以在表单中添加表单标记。您可以使用:

    {!! csrf_field() !!}
    

    ...在表格中。它将添加隐藏的输入和令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2016-06-17
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多