Laravel 5 CSRF令牌不匹配

时间:2016-05-23 22:56:42

标签: php laravel laravel-5.2 csrf

我对Laravel的CSRF令牌感到恼火。我正在使用Laravel Collective的form包。表单中的标记值与提交的页面上的标记值不同。

一些注意事项:

  1. 我已创建并迁移会话数据库表(php artisan session:table
  2. 我正在使用数据库来存储会话,而不是文件系统
  3. 正在数据库中创建记录。
  4. Form::open() 创建CSRF字段。我查看了该页面,并且它具有有效的CSRF值。
  5. 即使我没有使用文件系统,我也在storage目录上设置了正确的权限。
  6. 在我的路线文件中,我的路线 使用Route::group(['middleware' => ['web']], function () {});进行分组
  7. 在我的表单中,设置了CSRF令牌。但是,当我在中间件中提交表单和DD存储在会话表单中的CSR时,预期值与提交的内容不同。
  8. 我在SESSION_DRIVER=database文件
  9. 中设置了.env
  10. 我完成了composer dumpphp artisan cache:clear并删除了我的Cookie。
  11. 我用谷歌搜索了一下。我一直在谷歌,StackOverflow,laracasts,laravel,随机论坛上,到目前为止没有任何建议。
  12. 所以我的问题是:

    我有一张表格。在该表单中,我有一个隐藏的_token字段,该字段是有效的CSRF令牌。

    当我使用标准POST请求(没有javascript / ajax)将表单提交到服务器时,服务器期望的CSRF令牌与表单提供的令牌不同。

    换句话说,似乎令牌在表单中输出时以及中间件接收时都会发生变化。

    考虑到上述考虑因素,我还可以采取哪些措施来解决或调试问题,或者我可能错过了什么。

    如果有人需要额外的详细信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果您正在添加{{ csrf_file() }}函数或类似内容以提交它,但仍然收到此错误,则可能是php配置问题。您是否尝试在POST中提交文件?在命令行中输入php --info | grep size并检查upload_max_filesize大小和post_max_size,以确保它们足够大,以便发布您的帖子数据。如果它们确实太小,请调整php.ini或{laravel_directory} /public/.htaccess文件以更改这些值。