私はLaravelを動画で勉強しています。私は、テキストボックスと送信ボタンだけでビューを作った。 Submitボタンをクリックすると、VerifyCsrfToken.php行67のTokenMismatchExceptionエラーが発生します。VerifyCsrfToken.php行のTokenMismatchException 67 - ミドルウェアを無効にしてデフォルトに設定する方法
TokenMismatchException in VerifyCsrfToken.php line 67:
C:\xampp\htdocs\laravel_tut\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php line 67:
in VerifyCsrfToken.php line 67
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 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
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 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{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 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{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 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{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 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 726
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
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 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{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 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 54
私はPostsControllerの持っている:
//PostsController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class PostsController extends Controller
{
...
public function create()
{
//
return view('posts.create');
}
public function store(Request $request)
{
//
return $request->all();
}
...
}
のroutes.php:
Route::resource('/posts', 'PostsController');
Route::group(['middleware'=>['web']],function(){
});
create.blade.php:私はGoogleで検索して
@extends('layouts.app')
@section('content')
<form method="post" action="/posts">
<input type="text" name="title" placeholder="Enter title">
<input type="submit" name="submit">
</form>
最もソリューションの追加をお勧め:
< meta name="csrf-token" content="{{ csrf_token() }}" />
私はこの行を追加するチューターは見ませんでした。鉱山は、「ウェブ」
$ php artisan route:list
+--------+-----------+--------------------+---------------+----------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+--------------------+---------------+----------------------------------------------+------------+
| | GET|HEAD | insert | | Closure | web |
| | POST | posts | posts.store | App\Http\Controllers\[email protected] | web |
| | GET|HEAD | posts | posts.index | App\Http\Controllers\[email protected] | web |
| | GET|HEAD | posts/create | posts.create | App\Http\Controllers\[email protected] | web |
| | DELETE | posts/{posts} | posts.destroy | App\Http\Controllers\[email protected] | web |
| | PUT|PATCH | posts/{posts} | posts.update | App\Http\Controllers\[email protected] | web |
| | GET|HEAD | posts/{posts} | posts.show | App\Http\Controllers\[email protected] | web |
| | GET|HEAD | posts/{posts}/edit | posts.edit | App\Http\Controllers\[email protected] | web |
+--------+-----------+--------------------+---------------+----------------------------------------------+------------+
私は、このミドルウェアを無効にすることができれば、問題が解決されることを想定している間、リスト、彼のミドルウェアの列の値が空である:私は彼のルートであることに気づきました。しかし、彼のプロジェクトでは、教師がディセーブル・ステップを実行するのを見ていないので、彼はデフォルトでそれを設定していると思うので、ミドルウェアはどのプロジェクトでも常に無効になっています。このVerifyCsrfTokenエラーを修正する正しい方法を考えていますか?もしそうなら、どのようにミドルウェアを無効にして他のプロジェクトのデフォルトにすることができますか?私はLaravel 5.2.39とNetBeans IDEを使用しています。
これは、家庭教師のルートです:リスト
私は '{!! 'は、テキストボックスの直前に別のボックスを作成しました。 。とにかく、ミドルウェアを一度無効にする方法はありますか?つまり、プロジェクトでは一度無効にしています。新しいプロジェクトではこれをやり直す必要はありません。私は家庭教師が彼のプロジェクトのいずれかであなたの提案のような行を追加することを見ていないので。 Laravelでフォームを送信するときにこのcsrf_tokenエラーが発生するのは自然ですか?返信いただきありがとうございます。 –
@TruongVanHoc CSRFの保護は現実的な理由から、本当にCSRFミドルウェアを無効にしたくないのです。あなたは間違いなくそれを無効にすることができますが、私はあなたがすべきではないと思います。 – Ohgodwhy
さて、アドバイスをいただきありがとうございます。私はチュートリアルのビデオを見ていたので、チュートリアルの理由は分かりませんでしたが、チュートリアル全体のフォームをポストの作成ビューからポストの更新ビューに置き、 '{{csrf_field()}}'をフォームの中に追加しました( '{{csrf_field ()}} 'は作成ビューのフォームには存在しません)。最終的に彼は '{!! Form :: open()!!} 'と' {!! htmlのformタグと '{{csrf_field()}} 'を置き換えるためのForm :: model()!!}'はもう必要ありません。 –