2016-07-12 12 views
0

Ich entschlüsseln JWT Tokens in der Middleware folgenden this Beispiel in der Dokumentation von Slim Framework. Jetzt möchte ich userid decodiert aus dem JWT-Token in das Anfrageobjekt binden. Dies ist, wie wir es in Expressjs tun, aber ich kann nicht herausfinden, wie man es in einem schlanken Rahmen tut. Gibt es überhaupt eine Bindung von Daten in das Anfrageobjekt?Binding Daten an Anfrage Objekt in Middleware [Slim Framework 3]

Ich habe versucht:

$request->setParam('userid', $userId); 

Antwort

2

Ok, ich dieses Problem gelöst haben. So können wir Daten an ein Anfrageobjekt in einem schlanken Framework binden.

$request = $request->withAttribute('userid', $userId); 

Und in der Route oder Controller, das ist, wie wir Daten bekommen können:

$userId = $request->getAttribute('userid'); 
+1

Gut gemacht! Die wichtige Lektion ist, dass das Request-Objekt unveränderbar ist, also müssen Sie die modifizierte $ request in eine neue Variable kopieren. Eine Frage zurück - im Code deiner Frage hast du die Methode als L-Wert benutzt ($ request-> setParam ('userid') = $ userId; '). Ich bin mir dieser Funktion in PHP bis auf ein spezielles 'list()' -Konstrukt nicht bewusst - können Sie mich bitte darauf aufmerksam machen? – jirka

+0

Sie haben Recht. Das war ein Fehler, den ich gemacht habe. Ich habe den Code einfach kopiert und eingefügt, weil ich alles versucht habe, um das Ergebnis zu erzielen. Ich komme von nodejs und so machen wir es in express 'req.user = userid;'. Wie auch immer, ich habe den Code in der Frage aktualisiert. – Noobish