在VerifyCsrfToken.php第68行中获取TokenMismatchException

时间:2017-05-10 09:12:17

标签: php database laravel token crud

我有简单的添加,编辑和删除方法,但随机我收到此错误:

  

VerifyCsrfToken.php第68行中的TokenMismatchException

有时没有任何错误我可以添加,编辑或删除,有时我收到错误,我不知道为什么。我收到此错误,因为我在表单中使用csrf_field

{{csrf_field()}}

这是我的代码。 路线:

Route::resource('info','InfoController');

索引视图:

@if(Auth::check())
    <div class="info-btn">
        <a href="info">Add</a>
        @if($info)
            <a href="{{action('InfoController@edit',$info->id)}}">Edit  </a>

            {!! Form::open(['action' => 
         ['InfoController@destroy',$info->id] , 'method'  =>  'DELETE']) !!}
            {{Form::token()}}
            {{form::submit('delete')}}
            {{Form::close()}}
        @endif
    </div>
@endif

添加视图:

<form action="{{action('InfoController@store')}}" method="post">
    {{csrf_field()}}

    <div class="form-group">
        <label for="name">Name</label>
        <input type="text" name="name" class="form-control" id="name"}">
    </div>
        <label for="name">Slogan</label>
        <input type="text" name="add-slogan" class="form-control" id="slogan">
    </div>
    <div class="form-group">
        <label for="email">E-Mail:</label>
        <input type="mail" name="email" class="form-control" id="email">
    </div>
    <div class="form-group">
        <label for="phone">Phone :</label>
        <input type="text" name="phone" class="form-control" id="phone">
    </div>

    <button type="submit">Send Info</button>
</form>

编辑视图就像上面的表格一样,只有不同的行动

<form action="{{action('adminInfoController@update',$edit_info->id)}}" method="post">
    {{csrf_field()}}
    {{method_field('PUT')}}

InfoController:

public function index()
{
    $info=Info::all()->first();
    return view('info-add',compact('info'));
}

public function store(Request $request)
{
    $name = $request->input('add-name');
    $slogan = $request->input('add-slogan');
    $email = $request->input('add-email');
    $phone = $request->input('add-phone');
    DB::table('data')->insert([
        'name' => $name,
        'email' => $email,
        'address' => $address,
        'phone' => $phone,
    ]);
    return redirect('/');
}

public function edit($id)
{
    $edit_info=DB::table('data')->where('id',$id)->first();
    return view('info-edit',compact("edit_info"));
}

public function update(Request $request, $id)
{
    DB::table('data')->where('id',$id)->update([
        'name' => $request->input('name'),
         'phone' =>$request->input('phone'),
         'email' =>$request->input('email'),
    ]);
    return redirect('/');
}

public function destroy($id)
{
    DB::table('data')->where('id',$id)->delete();
    return Redirect('/');
}

2 个答案:

答案 0 :(得分:0)

如果你确定传递了_token,你应该检查你正在使用什么类型的Session。默认情况下,laravel使用文件会话。我使用繁重的ajax应用程序遇到了这个问题,将会话驱动程序更改为数据库解决了我的问题。

在这里阅读更多相关信息: https://laravel.com/docs/5.4/session#configuration

答案 1 :(得分:0)

如果时不时发生,这可能是由于会话超时。如果您尝试刷新页面,可以检查它。 Check this laracast讨论。