1. 程式人生 > >laravel 5.4 報錯 TokenMismatchException in VerifyCsrfToken.php

laravel 5.4 報錯 TokenMismatchException in VerifyCsrfToken.php

♩. 報錯情況

form 表單進行 post 方式提交資料時,遇到如下的報錯情況
TokenMismatchException  in VerifyCsrfToken.php line 67:
in VerifyCsrfToken.php line 67
post æ°æ®æ交æ¥é

 

♪. 原因

  • Laravel 推薦在全域性註冊 VerifyCsrfToken 的 Middleware ,對所有 Post、Put、Delete 請求自動校驗是否帶合法的 _csrf token

♫. 解決方法

方法 ①

  • 在form表單中新增如下的隱藏域程式碼
<input type="hidden" name="_token" value="{{ csrf_token() }}" />

方法 ②

  • 在form表單中新增 csrf_field (與上述解決方法功能一致)
{!! csrf_field() !!}

方法 ③
註釋 Kernel.php 程式碼 
開啟 app\Http\Kernel.php,在檔案中註釋掉下面的程式碼
\App\Http\Middleware\VerifyCsrfToken::class
1
方法 ④
修改handle()方法 
開啟 \app\Http\Middleware\VerifyCsrfToken.php,新增或修改 handle()方法如下:
 public function handle($request, \Closure $next)
    {
        // 使用CSRF
        //return parent::handle($request, $next);
        // 禁用CSRF
        return $next($request);
    }

方法 ⑤
[適用於 Laravel5.5,取消請求的 csrf_token驗證,不是取消全部]
跟上述的方法4 類似,開啟 app\Http\Middleware\VerifyCsrfToken.php 檔案,找到
protected $except = [

];
1
2
3
例如我要 http://xx.com/api/ 下面的都跳過驗證,可改成如下所示:

protected $except = [

    'api/*'

];
舉例: 

 

♬. 補充 csrf 介紹

csrf  圖解釋義

§ 參考文章