【发布时间】:2016-10-06 06:35:45
【问题描述】:
我在 Laravel 5.2 项目中遇到了可怕的 VerifyCsrfToken 错误。
相关代码如下:
引发错误的路由
Route::group(['middleware' => ['web']], function(){
Route::resource('register', 'RegisterController');
});
当我尝试使用 POST 请求注册新用户时抛出错误
注册控制器
public function store(Request $request)
{
return AppUser::create([
'name' => $request->input('name'),
'email' => $request->input('name'),
'contact_number' => $request->input('contact_number'),
'api_token' => str_random(60),
'password' => $request->input('password'),
]);
}
预期输出
{
"email": "test.name",
"contact_number": "654987123",
"updated_at": "2016-10-06 06:30:26",
"created_at": "2016-10-06 06:30:26",
"id": 4
}
我的问题与其他 VerifyCsrf 不匹配问题的不同之处在于,我没有添加 {{ csrf_token() }} 隐藏字段的表单。我刚刚使用 Postman(和 curl)发送了请求,用户需要注册。
当我对app/Http/Middleware/VerifyCsrfToken.php进行以下编辑时
protected $except = [
'/*'
//
];
错误消失了,它可以正常工作,但我不认为这是推荐的方式。
谢谢
【问题讨论】:
-
您到底想完成什么,是的,根本不推荐添加“/*”。
-
@GauravDave 从上面的代码中,我想做的就是注册用户(这只是一个测试而不是最终版本)所以我使用邮递员在正文中发送所需的数据,链接是
localhost:8000/register。我希望将数据输入数据库。 -
谁反对这个:/
-
你使用一些javascript吗?还是只是php?如果是php,使用Form helper,它会为你准备csrf。
-
<meta name="csrf-token" content="{{ csrf_token() }}">如果您不使用表单,请将其添加到您的刀片中。
标签: php laravel laravel-5.2