2015-10-02 80 views
1

我是新来laravelTokenMismatchException在laravel

我想改变发送多形式要求laravel后注释状态

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

表明我这个错误

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

你必须将表单中的令牌提交(用于防止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

+0

我相信在Laravel 4中它会自动包含带'Form :: open()'方法的标记。 – ntzm

+0

我已经这样做了,但它没有奏效,当我看到萤火虫的代码时,它有令牌但钢铁显示我错误 –

+0

@natzim是的,与Laravel 5.1相同令牌会自动添加一个“Form: :打开()' – surfer190

相关问题