2016-05-23 18 views
2

Was versuche ich?TokenMismatchException für API in Laravel 5.2.31

Ich habe bereits eine Website und ich versuche Token basierende Authentifizierung für eine API in gleichem Code und unten ist der Start für den Probenauthentifizierungscode

ich ein Controller unten erstellt der Code ist.

class AccountController extends \App\Http\Controllers\Controller 
{ 
    public function apilogin($UserData) { 
     return json_decode($UserData); 
    } 
} 

Meine Route Config ist unten.

Route::group(['prefix' => 'api/v1', 'middleware' => 'auth.api'], function() { 
    Route::post('/apilogin', 'API\User\Account\[email protected]'); 
}); 

** Dann aus der Postbote Chrome Extension, ich habe die Anfrage gebucht und hat gut funktioniert, wenn ich die folgende Zeile von $ middlewareGroups in Kernel.php

\App\Http\Middleware\VerifyCsrfToken::class, 

Ich habe keine Probleme äußern VerifyCsrfToken wenn ich zu tun bekommen Anfrage von Postman Erweiterung

+0

hast du irgendwas in config/auth.php gesetzt, wenn ja, als anzeigen? – DsRaj

+0

Ich habe in der Gruppe "Route" keine ', 'Middleware' => 'auth: api'' erwähnt, da ich davon ausgehe, dass diese Route für alle zugänglich sein sollte und nicht geschützt werden sollte. Ich sende post Anfrage von UserName und Passwort, um api_token zu erhalten. Ist das gut? – Pankaj

Antwort

0

In Ihrem route.php Code unten gesetzt

Route::group(['prefix' => API_PREFIX,'middleware' => 'auth.api'], function() 
{ 
// Your Route 
} 

In deiner kernal.php unter Middleware ist es gut, eine andere Middleware für API zu verwenden.

'auth.api' => \App\Http\Middleware\ApiAuthenticate::class, 

hinzufügen Middle ApiAuthenticate.php

class ApiAuthenticate 
{ 
    public function handle($request, Closure $next, $guard = 'api') 
    { 
     if (\Auth::guard($guard)->guest()) { 
      return response("Invalid user"); 
     } 
     else { 
      return $next($request); 
     } 
     return $next($request); 
    } 
} 

Überprüfen Sie Ihre Methoden GET und POST zu

+0

Ich habe die Frage aktualisiert. Bitte prüfe. Ich stehe immer noch vor demselben Problem. – Pankaj

+0

funktioniert Ihre grundlegende Authentifizierung? – DsRaj

+0

Wenn ich die Authentifizierung von meiner Webseite aus mache, funktioniert es einwandfrei. Jetzt tritt das Problem bei Token-basierter API-Authentifizierung auf. – Pankaj

0

TokenMismatchException tritt in der Regel, wenn csrf Token nicht in Form abgelaufen oder csrf Token oder tamperd csrf Zeichen.

Erstens:

sicher, dass Sie in Form hinzugefügt

<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

Oder

löschen versuchen mit klaren Cache für View-Dateien

Oder

Prüfen, ob die Umleitung sind dort im Fluss

Schließlich, wenn alles scheitert, wenn Sie diesen Fehler anpassen möchten. Sie können diesen Fehler in Hanfern behandeln. Überprüfen Sie [this][1]

+0

Dies ist über API. Wenn Sie meine Controller-Aktionsmethode sehen, gibt sie JSON-Daten für die Postanforderung zurück. – Pankaj

+0

Soweit mein Wissen tokenismistach Fehler nur auf Anfrage Anruf auftreten wird. Es hängt nicht damit zusammen, was es zurückgibt. – vijaykumar

+0

Ich poste die Daten von Postman Chrome Extension. Ich mache das, weil ich an Android arbeite, um mit Laravel für API-Zwecke zu interagieren. – Pankaj

5

Öffnen Sie Ihre app\http\Middleware\VerifyCsrfToken.php Datei.

Hier bearbeiten $except Eigenschaft mit:

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

dies Ihre api Routen von CSRF Überprüfung ausschließen.

Verwandte Themen