我've an annoying error with Laravel'的CSRF代币 . 我'm using the Laravel Collective' s form
包 . 表单中的标记值与提交的页面上的标记值不同 .
一些注意事项:
-
我创建并迁移了会话数据库表(
php artisan session:table
) -
我正在使用数据库来存储会话,而不是文件系统
-
正在数据库中创建记录 .
-
Form::open()
正在创建CSRF字段 . 我查看了该页面,并且它具有有效的CSRF值 . -
即使我没有使用文件系统,我也在
storage
目录上设置了正确的权限 . -
在我的路线文件中,我的路线使用
Route::group(['middleware' => ['web']], function () {});
进行分组 -
在我的表单中,设置了CSRF令牌 . 但是,当我在中间件中提交存储在会话表单中的表单和DD CSRF令牌时,预期值与提交的值不同 .
-
我在
.env
文件中设置了SESSION_DRIVER=database
-
我做了
composer dump
,php artisan cache:clear
并删除了我的cookies . -
我用谷歌搜索了一下 . 我一直在谷歌,StackOverflow,laracasts,laravel,随机论坛,到目前为止没有任何建议 .
所以我的问题是这样的:
我有一张表格 . 在该表单中,我有一个隐藏的 _token
字段,该字段是有效的CSRF令牌 .
当我使用标准 POST
请求(没有javascript / ajax)将表单提交到服务器时,服务器期望的CSRF令牌与表单提供的令牌不同 .
换句话说,似乎令牌在表单内输出时以及中间件接收时都会发生变化 .
考虑到上述考虑因素,我还可以做些什么来修复或调试问题,或者我可能错过了什么 .
如果有人需要额外的细节,请告诉我 .
1 回答
如果您要添加
{{ csrf_file() }}
函数或类似的东西以提交它,但仍然收到此错误,则可能是php配置问题 . 您是否尝试在POST中提交文件?在命令行中键入php --info | grep size
并检查upload_max_filesize
大小和post_max_size
以确保它们足够大以用于发布数据 . 如果它们确实太小,请调整php.ini或 /public/.htaccess文件以更改这些值 .