2016-06-02 10 views
0

Ich teste meine Laravel (5.2) -API die folgende Art und Weise, indem sie zwei Anforderungen auf dem gleichen Test (Routen auf dem Hut: api):TokenGuard (api) Abrufen von alten Benutzern nach dem zweiten Anfrage

$this->getJson('v1/ratings', 'POST'); 
// v1/ratingsapi_token=JcM6ftg6icLPGAbUX9E37HGSYsrAYU0GH1AJhoYxEfIi5LwhalRBf0iAcmJ2 

dann mache ich die zweite Anforderung mit einem anderen Token:

// v1/ratings?api_token=JgYdM890bIPHVYsiddHUp5vXaG9C1qhjLcYdZ1UioFZpPvPANGMqw26RJ3RB 

Aber ich bin immer noch mit dem gleichen Benutzer angemeldet ...

aus Illuminate \ Auth kommt \ TokenGuard @ user:

Wenn ich diesen Block kommentieren, funktioniert alles gut, aber ich verstehe nicht, warum es den Benutzer von der vorherigen Anfrage erhält?

Antwort

0

Der aktuelle Benutzer ist bereits in der Eigenschaft $user zwischengespeichert, so dass der TokenGuard keine weitere Anfrage zum Abrufen des Benutzers senden wird, unabhängig von Ihren verschiedenen Tokens, und wird den alten zurückgeben.

Wie Sie sehen können, legt die letzte Zeile der Methode die Eigenschaft $ user auf den abgerufenen Benutzer return $this->user = $user; fest.

+0

Ich dachte mir, aber es soll nicht den Benutzer über 2 Anfragen zwischenspeichern, wie es in der Beschreibung geschrieben wird. Die gute Frage wäre: Warum besteht der Benutzer auf 2 verschiedenen Anfragen? –

+0

Können Sie Ihren Beitrag mit genau wie Sie Ihren Test bearbeiten? Ich meine es ist PHPUnit, Standard-Laravel-Testfall, Sie geben die URLs in Ihrem Browser oder etwas anderes ein. – TheFallen

+0

Eigentlich gerade gefunden, warum: Ich verlasse nie die App während der Ausführung meiner 2 Anfragen auf meinem Einzeltest So wird der TokenGuard nie wieder aufgebaut, so dass es den alten Benutzer behielt. Sie müssen Ihren Guard-Benutzer während des Tests manuell aktualisieren –

Verwandte Themen