laravel中的TokenMismatchException

时间:2015-10-02 15:38:18

标签: php laravel laravel-5

我是laravel的新手

我想更改评论状态

{!! Form::open(['method'=>'patch','onchange'=>'submit()','action'=>['CommentController@update',$item->id]]) !!}
{!! Form::select('show',[0 =>'No',1 =>'Yes' ], $show_view) !!}
{!! Form::close() !!}

发送多个表单请求后laravel显示此错误

TokenMismatchException in VerifyCsrfToken.php line 53:

in VerifyCsrfToken.php line 53
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 54
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54

1 个答案:

答案 0 :(得分:1)

您必须在表单中提交令牌(用于防止CSRF攻击)。

如果您使用的是Laravel 5,请使用

{!! csrf_field() !!}

如果您正在执行AJAX请求,可以在标题X-CSRF-TOKEN中添加令牌 请看这一部分:http://laravel.com/docs/5.1/routing#csrf-x-xsrf-token

如果您使用的是Laravel 4,则可以在表单中使用Form::token()

另一个选项是从CSRF保护中排除URI,这是不推荐的,但如果需要可以完成: http://laravel.com/docs/5.1/routing#csrf-excluding-uris