2016-05-20 7 views
1

よく質問します。Laravel 5.2 CSRFすべてのフォームのフィールド?

私はLaravel 5.2プロジェクトを標準認証で実行しています。私はバックエンドにログインしています。しかし、私はあらゆる形式で使用する必要がありますそれは正常です{{ csrf_field() }}

私はそれがログインフォームにあり、それが必要であることを知っています。

しかし、バックエンドで新しいフォームを作成すると、Laravelは、私のモデルが私のデータを保存するという事実にもかかわらず、「CSRF検証」を望んでいます。_token -Fieldはありません。

私は{{ csrf_field() }}を実装し、エラーを避けるためにコントローラに$match->bet()->create($request->except(['_token']));を使用しました。

これは正しい方法ですか?私には奇妙に見えます。

すべてのフォームで{{csrf_field()}}を使用する必要があるのはLaravelの通常の動作ですか?それとも、POSTSでそれを避ける方法はありますか?簡単な方法...

+0

特定の投稿要求に対してcsrfを無効にすることはできませんか? –

+0

あなたは何をしたいのか分かりません...あなたは明確にできますか? – xAoc

答えて

2

Form::open()を使用すると、フォームにcsrfフィールドが自動的に追加されます。また、csrf_token()ヘルパー機能を使用する必要はありません。

HTMLFormはLaravel 5から削除されたので、あなたがlaravelcollectiveをインストールする必要Formファサードを使用するには、* https://laravelcollective.com/docs/5.2/html

+0

わかりましたが、そのフィールドでは、私のモデルにはその列がないので、私はそれを必要としませんが、常に私のRequest変数に '_token'を持っています。 – sjess

+0

セキュリティ上の理由から必要となります。モデルごとに 'fillable'フィールドを指定し、\ updateメソッドを作成するために' $ request-> all() 'を渡すことができます – xAoc

+0

私のモデルでは、全てのモデルで" _token "というカラムは必要ありません。 、エラーを投げます。ですから、私はREQUESTに "_token"を使わないために常に '$ match-> bet() - > create($ request-> except(['_ token']));を使う必要があります。それは正しいアプローチですか? – sjess

0

あなたはそれに悩まさということであればあなただけのCSRFミドルウェアを削除することができます。それはあなたを守るためのものです。より良い選択肢は、VerifyCsrfTokenミドルウェアに免除を追加することです。

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

「管理者」のすべてのURLを除外したい場合は、おそらく。

xAocは、モデルに「fillable」を正しく設定すると、モデルを塗りつぶすときに不要なフィールドを除外するのに役立ちます。

関連する問題