web-dev-qa-db-ja.com

In Laravel 5、特定のルートのVerifycsrfTokenミドルウェアを無効にする方法?

私はLaravel 5をアプリの開発に使用しています。私のアプリはVendHQ APIに接続されており、Webhookを介してVendHQからデータを取得する予定です。 ドキュメント

イベントが発生してWebhookがトリガーされると、POSTリクエストを選択したURLに送信します。POSTリクエストはUTF- 8文字セット、およびapplication/x-www-form-urlencodedエンコーディング。

問題は、POSTリクエストをmy Laravelアプリに送信しようとすると、投稿リクエストに_CSR $トークンが追加されず、VerifyCsrfTokenミドルウェアはトークンを探し、最後にTokenMismatchExceptionをスローします。

私の質問は、特定のルートでこのデフォルトのVerifyCsrfTokenミドルウェアを回避し、他の投稿リクエストをアクティブに保つにはどうすればよいですか?

24
Ariful Haque

CSRFは、Laravel 5のすべてのルートでデフォルトで有効になっています。特定のルートに対してapp/Http/Middleware/VerifyCsrfToken.phpを変更することで無効にできます。

//app/Http/Middleware/VerifyCsrfToken.php

//add an array of Routes to skip CSRF check
private $openRoutes = ['free/route', 'free/too'];

//modify this function
public function handle($request, Closure $next)
    {
        //add this condition 
    foreach($this->openRoutes as $route) {

      if ($request->is($route)) {
        return $next($request);
      }
    }

    return parent::handle($request, $next);
  }

ソース

18
Alex Kyriakidis

Laravel 5これは少し変更されました。csrftoken検証から除外したいルートをクラスの$except配列に追加するだけです。

'VerifyCsrfToken'(\ app\Http\Middleware\VerifyCsrfToken.php):

class VerifyCsrfToken extends BaseVerifier
{
    protected $except = [
        // Place your URIs here
    ];
}

例:

1.ルートグループを使用している場合:

Route::group(array('prefix' => 'api/v2'), function()
{
    Route::post('users/valid','UsersController@valid');
});

$except配列は次のようになります。

protected $except = ['api/v2/users/valid'];

2.シンプルなルートを使用している場合

Route::post('users/valid','UsersController@valid');

$except配列は次のようになります。

protected $except = ['users/valid'];

3.メインルート(この場合はユーザー)の下のすべてのルートを除外する場合

$except配列は次のようになります。

protected $except = ['users/*'];

参照: http://laravel.com/docs/master/routing#csrf-exexcept-uris

47
user3252599

バージョン5.2を使用している場合:app/Http/Middleware/VerifyCsrfToken.phpで、属性にルートを追加できます:protected $ except:例:

protected $except = [
'users/get_some_info',
];

ユーザーの部分がコントローラーになり、「get_some_info」がアクションになります。この変更を実行した後、routes.phpにルートを追加してください。

8
Abraham

ルートをApp\Http\Middleware\VerifyCsrfToken.phpファイルに追加します。

/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'route-name-1', 'route-name-2'
];
3
Sunilspr7