【问题标题】:Laravel 5 TokenMismatchExceptionLaravel 5 TokenMismatchException
【发布时间】:2016-03-06 00:58:55
【问题描述】:

我知道这是一个被广泛讨论的问题,我已经阅读了很多关于此的帖子,但找不到解决方案。

我在我的 PC 上本地开发了一个网站,一切运行良好。然后我把这个网站放在我的个人网站上,看看它是如何运作的。这样做后,除了我网站的身份验证部分之外,一切似乎都正常工作。当我尝试登录我的应用程序时,我收到此错误TokenMismatchException in VerifyCsrfToken.php line 46

我没有在本地收到此错误,但在我的主机服务器上收到它。有什么我错过的吗?需要修改配置文件吗?

我已更新我的 .env、app.php、database.php 文件以在我的个人网站上运行。我确保这个<input type="hidden" name="_token" value="{{ csrf_token() }}"> 元素就在我的<form> 标签下,从其他类似问题的帖子中可以看出。

想法?

HTML:

<form class="form-horizontal" role="form" method="POST" action="">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">

【问题讨论】:

  • 尝试清除缓存,然后运行php artisan key:generate,并确保将生成的密钥放在您的 .env 文件中。
  • @MinaYoussef 你的建议对我来说似乎很完美。请创建一个新答案,以便我将其选为正确答案。非常感谢您的帮助
  • 哦,我很高兴它成功了,我已经创建了答案。

标签: php authentication laravel-5 token


【解决方案1】:

尝试执行以下操作:

  1. 清除缓存
  2. 运行php artisan key:generate
  3. 确保将生成的密钥放在您的.env 文件中。

【讨论】:

    【解决方案2】:

    如果您使用 jquery 发布表单,那么您应该包含 csrf_token()

    $_token = "{{ csrf_token() }}";
    $.post( 'myurl', { param1: $param1, param2: $param2, _token: $_token })
    .done(function( data )
    {
         console.log('Done!');
    });
    

    如果您直接发布表单并遇到同样的问题,请转到 app/Http/Resquests/Kernel.php 并评论此行

    \App\Http\Middleware\VerifyCsrfToken::class
    

    【讨论】:

      【解决方案3】:

      查看此答案并避免一直执行上述建议。

      jQuery add CSRF token to all $.post() requests' data

      【讨论】:

      • 我没有使用 jQuery。除非 Laravel 在幕后这样做?
      • 哦,抱歉,被其他答案所困扰。没有 laravel 不使用 jquery。你的领域似乎没问题。您可以尝试使用 {{ crsf_field() }} 而不是输入。这将创建整个输入字段。
      • so 而不是 &lt;input blah='' blah='' 而是 {{ crsf_field() }} 这给我带来了一个新错误
      猜你喜欢
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      相关资源
      最近更新 更多