2016-04-07 10 views
3

Ich habe folgende Routen in Ort:Web-Middleware API Routen in Laravel angewendet werden 5.2

Route::group(['prefix' => 'api/v1', 'middleware' => 'api'], function() { 
    Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]); 
    Route::post('authenticate', '[email protected]'); 
    Route::resource('users', 'UserController'); 
}); 

Die UserController hat einen Test, um sicherzustellen, wenn ein Benutzer über POST vorgelegt wird, dass sie die Eingabe bestätigt richtig . Dies sollte 422 zurückgeben, wenn es ungültig ist, aber es gibt tatsächlich einen 302 zurück. In Postman löst es einen CSRF-Token-Fehler aus, was darauf hindeutet, dass die Middlewaregruppe web angewendet wird, was nicht das gewünschte Verhalten ist.

Wie kann ich dies verhindern?

Antwort

5

In RouteServiceProvider.php Änderung

$router->group([ 
     'namespace' => $this->namespace, 'middleware' => 'web', 
    ], function ($router) { 
     require app_path('Http/routes.php'); 
    }); 

zu:

$router->group([ 
     'namespace' => $this->namespace, 
    ], function ($router) { 
     require app_path('Http/routes.php'); 
    }); 

Und dann wickeln Sie Ihre Web-Routen mit Route::group(['middleware' => 'web']) in routes.php. So werden API-Routen von web Middleware nicht beeinflusst.

+0

Das war mein exaktes Problem. Vielen Dank! – tptcat

+0

Ich bekam auch nicht die $ -Fehler in den Ansichten und in der Route: Liste Ich sah Web-Middleware zweimal erscheinen. Aber das war die Lösung, um beides zu lösen. – Tarunn