2016-05-31 10 views
1

Ich habe zwei ähnliche Laravel-Projekt. Dies ist ein Teilcode von kernel.php. Beide Projekte haben denselben Code.VerifyCsrfToken immer aufgerufen, wenn Route zu API Middleware Laravel 5.2.35

protected $middlewareGroups = [ 
    'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \App\Http\Middleware\VerifyCsrfToken::class, 
    ], 
    'api' => [ 
     'throttle:60,1', 
    ], 
]; 

Aber VerifyCsrfToken immer genannt werden, obwohl ich meine Route middlewareGroup innerhalb api setzen.

Ich überprüfe Anfrage Header in Advanced REST Client. Ich habe das gefunden.

Erstes Projekt Ergebnis:

enter image description here enter image description here

Zweites Projekt Ergebnis:

enter image description here enter image description here

Erstes Ergebnis hat Cookie-Attribut im Request-Header, aber zweites Ergebnis nicht über

+0

schwer zu sagen, ohne den Controllercode zu sehen, der diese Antworten erzeugt. Siehe https://laravel.com/docs/master/responses – Jeff

+0

@Jeff ich angehängt Anfrage screenshot anstelle von Response screenshot –

Antwort

0

Alle Routen in routes.php sind in einer Routengruppe enthalten, auf die die Middleware "web" angewendet wurde. Sie sollten wahrscheinlich eine andere routes-Datei erstellen und den RouteServiceProvider in einer Gruppe mit 'api' und ohne die 'web' Middleware laden lassen.

Wenn Sie Ihren RouteServiceProvider öffnen, sehen Sie, wo dies geschieht. Überprüfen Sie die map Methode, um es mapWebRoutes aufrufen zu sehen.

+0

Ich weiß nicht meine erste 'RouteServiceProvider.php' und zweite' RouteServiceProvider.php' hat einen anderen Code –

0

Verwenden Sie Routen ohne Middleware und es wird kein csrf-Token mehr benötigt.

0

Sie können die csrf-Token-Prüfung für alle Ihre API-Links in app/Http/Middleware/VerifyCsrfToken.php überspringen, indem Sie der Eigenschaft $ except die URIs hinzufügen. Beispiel:

+0

Deine Antwort ist wahr. Aber ich bin neugierig auf alles. Weil alles ähnlich ist. Das zweite Projekt hat keine Ausnahmevariable, aber es kann außer csrftoken. –

+0

Beide Projekte haben denselben SESSION_DRIVER-Wert in Ihrer .env-Datei? Überprüfen Sie Ihre Sitzungseinstellungen, möglicherweise speichern Sie sie in der Datei, aber vergessen Sie nicht, Berechtigungen richtig festzulegen. – Bushikot