11

Laravel 5 はデフォルトで CSRF フィルターをすべての非 get リクエストに適用しているようです。これはフォームの POST では問題ありませんが、POST や DELETE などを行う API では問題になる可能性があります。

簡単な質問:

CSRF 保護なしで POST ルートを設定するにはどうすればよいですか?

4

4 に答える 4

20

に移動してapp/Http/Middleware/VerifyCsrfToken.php、 $except 配列に (csrf トークンを無効にする) ルートを入力します。

例えば:

class VerifyCsrfToken extends BaseVerifier
{

    protected $except = [

        '/register'

    ];
}
于 2015-12-10T11:34:02.203 に答える
2

問題への私のハック:

CSRF は、グローバルに登録された「ミドルウェア」になりましたApp\Http\Kernel.php。削除すると、デフォルトで CSRF 保護なしになります (Laravel4 の動作)。

ルートで有効にするには:

  1. app/Providers/RouteServiceProvider.php で短縮キーを作成します。

    protected $middleware = [
      // ....
      'csrf'  => 'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken',
    ];
    
  2. 任意のルートで有効にできるようになりました:

    $router->post('url', ['middleware' => 'csrf', function() {
     ... 
    }]);
    

IMOの最もエレガントなソリューションではありません...

于 2014-11-18T11:36:08.030 に答える
0

これを聞いてください。30 分前に、私はこの同じ問題に直面していました。これで解決しました。これを試してみてください。

アプリに移動 -> HTTP -> カーネル

カーネルファイルを開きます。

そこにあなたが見ることができます: \App\Http\Middleware\VerifyCsrfToken::class,

// を使用してこの特定のコードを無効にするだけです

それだ!これはうまくいきます!

API呼び出しからミドルウェアを削除できるように(必要に応じて..)

于 2015-10-19T10:32:30.400 に答える