2015-10-02 2 views
1

Я новичок в LaravelTokenMismatchException в Laravel

Я хочу изменить комментарий статус

{!! Form::open(['method'=>'patch','onchange'=>'submit()','action'=>['[email protected]',$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 
+0

Что Laravel версии у вас есть? , в 5 вам нужно создать токен в вашей форме! – MozzieMD

+0

@MozzieMD это 5.1 Я добавил токен, но он не сработал –

+0

Вы проверяли заголовки HTTP-запросов? Высылается ли значение '_token' имени? или у вас есть надлежащий HTTP-заголовок, то есть набор X-CSRF-TOEKN? – revo

ответ

1

Вы должны иметь токен в вашей форме submit (используется для предотвращения атак CSRF).

Если вы на Laravel 5 используйте

{!! csrf_field() !!} 

Если вы делаете запрос AJAX вы можете добавить маркер в заголовке X-CSRF-TOKEN Посмотрите на этом разделе: http://laravel.com/docs/5.1/routing#csrf-x-xsrf-token

Если вы находитесь Laravel 4, вы можете использовать Form::token() в своей форме.

Другой варианты, чтобы исключить URI из защиты CSRF, которые не рекомендуются, но может быть сделан, если это необходимо: http://laravel.com/docs/5.1/routing#csrf-excluding-uris

+0

Я верю в Laravel 4, он автоматически включает токен с помощью метода 'Form :: open()'. – ntzm

+0

Я сделал это, но это не сработало, когда я вижу код firebug, у него есть токен, но он показывает мне ошибку –

+0

@natzim Да, то же самое с Laravel 5.1 Токен автоматически добавляется с помощью формы: : открытое() ' – surfer190

Смежные вопросы