2017-02-08 2 views
0

Ich fand eine Fülle von Links, die mir sagen, csrf auf dem Formular einfügen. Aber was tun, wenn Sie nicht eine Form haben? Ich benutze die Post-Methode, damit andere Apps Inhalte in der Datenbank veröffentlichen können.Laravel 5.3 - TokenMismatch, mit Post-Methode, ich habe kein Formular

public function store(Request $request) 
{ 
    if ($request->isMethod('post')) { 
     $solicitation = new Solicitation; 
     $solicitation->name = $request->name; 
     $solicitation->description = $request->description; 
     $solicitation->userid = $request->userid; 
     if ($request->hasFile('file')) { 
      $request->file('file')->move("uploads", $request->file('file')->getClientOriginalName()); 
      $solicitation->file = "http://192.168.1.85:3232/uploads/" . $request->file('file')->getClientOriginalName(); 
     } 
     $solicitation->save(); 
    } 
} 

Und der Fehler:

TokenMismatchException in VerifyCsrfToken.php line 68: 

bearbeiten

Problemumgehung/Lösung

Schritt 1) ​​ Bearbeiten Sie die Datei: VerifyCsrfToken.php (app \ Http \ Middleware \ VerifyCsrfToken.php)

Schritt 2) Ändern Sie den folgenden:

protected $except = [ 
    'solicitation/*', //INSERT THE NAME OF YOUR ROUTE HERE 
]; 

Genießen.

Antwort

2

Sie können die VerifyCsrfToken Klasse in Http \ Middleware bearbeiten Routen

+0

Ich werde den Beitrag mit der tatsächlichen Art und Weise zu aktualisieren. – Rosenberg

+0

Das ist der eigentliche Weg, es tut mir leid, ich habe nur angenommen, nach dem Finden der Datei der Rest wäre ziemlich selbsterklärend. – Adam

0

Sie sollten den Parameter _token verwenden, der bei jeder Verwendung der Methode POST mit der Anforderung gesendet wird.

+0

Was ich hinzufügen, auf den Token-Parameter? – Rosenberg

+0

Können Sie Ihre Frage aktualisieren und Ihre Code-Erstellungsanfrage hinzufügen? – Buglinjo

+0

Es ist eine schlechte Idee, CSRF-Token von Anfrage auszuschließen, obwohl – Buglinjo

0

Es klingt, als würden Sie eine API beschreiben. Wenn Sie die Anfrage von einer separaten Laravel-Anwendung senden, sind die Tokens nicht deckungsgleich. Die Lösung besteht darin, eine Anforderungssignatur/ein Token für die externe Anwendung zu generieren, die Ihre aktuelle Anwendung erwartet und überprüfen kann. Sie können Laravel Passport verwenden: https://laravel.com/docs/5.3/passport