VerifyCsrfToken.php中的TokenMismatchException(第68行)

时间:2017-08-06 14:21:28

标签: laravel

我遇到了这个问题TokenMismatchException 在VerifyCsrfToken.php中(第68行)。

在我的master.blade.php的头部,我有

<meta name="csrf-token" content="{{ csrf_token() }}">

和这一个

 $(document).ready(function(){
  $.ajaxSetup({
      headers: {
          'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
  });
  });

在页脚中。

这里我的代码片段shift.blade.php

<div class="modal fade" id="shift-show" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title">Nouveau shift</h4>
        </div>
        <form action="{{ route('createShift') }}"  method="POST"  id="frm-shift-create" >
            <div class="modal-body">
                <div class="row">
                    <div class="col-sm-12">
                        <input type="text" name="shift" id="shift" class="form-control" placeholder="Shift">
                    </div>
                </div>
            </div>

            <div class="modal-footer">
                <button data-dismiss="modal" class="btn btn-default" type="button">Fermer</button>
                <button class="btn btn-success" type="submit">Enregistrer</button>
            </div>
        </form>
    </div>
</div>

这是我的路线

Route::post('gerer/cours/shift',['as'=>'createShift','uses'=>'CoursController@createShift']);

在我的表单中添加{{csrf_token()}}时,它会返回一个空白的空白页,但我的生意中没有错误

我是laravel的菜鸟,我在这里看到了很多这样的问题,但没有解决我的问题。我能得到帮助吗?

1 个答案:

答案 0 :(得分:0)

我在您的帖子下面阅读了评论,Vandolph Reyes已经明确解决了您的问题,但让我们再解释一下。

TokenMismatchException例外表示您的表单错过了CSRF token protection

您在CSRF token中添加了<head>并将其添加到 AJAX HTTP请求标头中,但是对于您当前的表单,您显然不会使用“<强> AJAX 请求“,因此您的javascript代码段无用。

为了在表单中添加CSRF token,有两种解决方案:

  1. {{ csrf_field() }}添加到表单中。它将使用令牌添加隐藏字段,并将纠正问题。
  2. 添加<input type="hidden" name="_token" value="{{ csrf_token() }}" />。这是第一个解决方案生成的字段。
  3. 有了这个,您现在可以借助CoursController@createShift$request在目标控制器操作(request())中访问您的输入。例如,如果您要查找“转移”输入值,则会在$request->input('shift')(或$request->shift)中找到它。

    现在,您可以将您的值存储在数据库中,或者在其他视图/操作/控制器中使用它......