2017-11-08 28 views
1

特定のドメインのCSRF検証トークンを無効にしたいと考えています。たとえば、私のEC2インスタンス。これは私のEC2インスタンスで問題なくライブクロスブラウザテストを実行できるようにするためです。特定のドメインに対してCSRFトークンを除外する方法は?

ミドルウェアディレクトリのVerifyCsrfTokenをアプリ内の特定のルートに更新するための多くの情報が見つかりましたが、ホストやドメインの確認方法については何も見つかりませんでした。私は保護されたURIに/*を使用することができます。

class VerifyCsrfToken extends BaseVerifier 
{ 
    /** 
    * The URIs that should be excluded from CSRF verification. 
    * 
    * @var array 
    */ 

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

ただし、明白な理由から、このアプローチを使用しないことをお勧めします。

私は標準のLaravel 5.3セットアップを使用していますので、このフレームワークに付属の通常のミドルウェアファイルを使用してください。

助けていただけたら幸いです!

+0

あなたは 'isExceptArray'機能を無効にし、それに追加のロジックを追加することができます。 BaseVerifierのベースコード( 'Illuminate \ Foundation \ Http \ Middleware \ VerifyCsrfToken')を見てください – Ohgodwhy

答えて

1

CSRFミドルウェアでリクエストに使用されたホストを確認し、それに従って動作させることができます。あなたのVerifyCsrfTokenクラスに以下を追加します。

public function handle($request, Closure $next) 
{ 
    if ($request->getHost() == 'some.host.without.csrf.protection') { 
     // skip CSRF check 
     return $next($request); 
    } 

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

ありがとうございます - これは' App \ Http \ Middleware \ VerifyCsrfToken :: handle($ request、$ next)の宣言のエラーメッセージを返します。 Illuminate \ Foundation \ Http \ Middleware \ VerifyCsrfToken :: handle($ request、Closure $ next) 'と互換性がありますか? –

+0

ファイルの先頭に 'Use Closure;'を追加します。 –

+0

私の間違いは間違いありません。今、 '未定義の関数App \ Http \ Middleware \ parent()'を呼び出すと、 –

0

これを行う最善の方法は、親クラスIlluminate\Foundation\Http\Middleware\VerifyCsrfTokenに書かれているisExceptArray関数を上書きすることです。

ロジックを書き込んでください。

関連する問題