2016-05-20 12 views
1

Nun, meine Frage des Tages ist:Laravel 5.2 CSRF Feld auf jedem Formular?

Ich habe ein Laravel 5.2 Projekt läuft mit Standard-Authentifizierung. Ich bin in mein Backend eingeloggt, alles gut. Aber ist es normal, dass ich auf jedem Formular {{ csrf_field() }} verwenden muss.

Ich weiß, ich habe es im Login-Formular und es ist notwendig.

Aber wenn ich ein neues Formular in meinem Backend bilde, will Laravel "CSRF Verification" trotz der Tatsache, dass mein Modell, in dem ich meine Daten speichern werde, kein _token -Feld hat.

Also habe ich implementiert {{ csrf_field() }} und $match->bet()->create($request->except(['_token'])); in meinem Controller verwendet, um Fehler zu vermeiden.

Ist das der richtige Weg? Scheint mir seltsam.

Ist es ein normales Verhalten von Laravel, dass ich {{csrf_field()}} auf jedem Formular verwenden muss? Oder gibt es eine Möglichkeit, dies auf POSTS zu vermeiden? Eine einfache Methode ...

+0

Sie möchten csrf auf bestimmte Post Anfrage deaktivieren, oder? –

+0

Nicht klar, was Sie tun möchten ... Können Sie bitte klären? – xAoc

Antwort

2

Wenn Sie Form::open() verwenden, wird das Feld csrf automatisch zu Ihrem Formular hinzugefügt. Und Sie müssen csrf_token() Hilfsfunktion nicht verwenden.

Form Fassade nutzen zu können, wurden laravelcollective weil HTML und Form von Laravel entfernt installieren 5. * https://laravelcollective.com/docs/5.2/html

+0

OK, ich verstehe das, aber mit diesem Feld habe ich immer '_token' in meiner Request-Variable, obwohl ich es nicht brauche, weil meine Modelle diese Spalte nicht haben. – sjess

+0

Sie benötigen es aus Sicherheitsgründen. Sie können 'fillable' Felder für jedes Modell angeben und' $ request-> all() 'übergeben, um \ update Methode – xAoc

+0

zu erstellen. Ich habe nicht und brauche nicht in allen meinen Modellen die Spalte" _token ", aber ohne sie Es wird ein Fehler ausgegeben. Also muss ich immer '$ match-> bet() -> create ($ request-> except (['_ token']))) verwenden, um das" _token "in der REQUEST nicht zu verwenden. Ist das der richtige Ansatz? – sjess

0

Sie könnten nur die CSRF-Middleware entfernen, wenn Sie, dass durch sie gestört sind. Es ist da, um dich zu beschützen. Die bessere Option wäre jedoch, der VerifyCsrfToken-Middleware Ausnahmen hinzuzufügen.

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

Wenn Sie alle URLs in 'admin' vielleicht ausschließen möchten.

Da xAoc die Einstellung "fillable" korrekt auf einem Modell angibt, sollten auch beim Füllen eines Modells unerwünschte Felder herausgefiltert werden.