2017-01-26 4 views
0

Ich baue eine Erweiterung in extbase (TYPO3 7.6, update auf 8 LTS so schnell wie möglich), wo eine Funktion wie eine REST-API ist.
Jemand muss einen neuen Objekt-/Datenbankeintrag über eine Smartphone-App erstellen. Die App sendet einfach eine Postanforderung mit den Daten an eine URL und überprüft den Status des antwortenden Status.Best Practice für POST-Daten in TYPO3/Extbase (REST-API)

Das erste Ding: Wie man auf die Postdaten zugreift?
Wenn ich eine flüssige Form baue, bekomme ich ein Objekt als Parameter für meine Aktion, die in den meisten Fällen bereits validiert ist. Aber wie wäre es mit manuellen Postanfragen?
Ich weiß, dass ich einen einzigen Parameter über $this->request->getArguments()
bekommen kann, ist das der beste Weg?
Die zweite Sache: Wie authentifiziert man den Benutzer?
Normalerweise würde ich das Login-Formular von TYPO3 verwenden und die Benutzer-ID von $GLOBALS['TSFE']
Aber in meiner API habe ich keine Sitzung oder Login-Formular. Benutzername und Passwort können nur bei jeder POST-Anfrage angegeben werden. Wie kann oder soll ich den Benutzer authentifizieren? Ich möchte das Rad nicht neu erfinden, wenn Extbase/TYPO3 dafür bereits eine Funktion hat.

Antwort

0

Für die Authentifizierung Sie eine HTTP-Basic-Authentifizierung gehen könnten, wo Sie die Benutzername und das Passwort kodieren Base64 und es via Header mit Ihrer Anfrage senden:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

In TYPO3 Sie eine benutzerdefinierte AuthenticationProvider, die eine Authentifizierung registrieren könnten Frontend-Benutzer basierend darauf. Sie sollten hierfür HTTPS verwenden (Sie sollten HTTPS auf jeden Fall verwenden).

Wie bei der Erstellung eines Datensatzes auf Basis von POST-Daten berücksichtigt extbase bereits POST-Daten. Wenn Sie also die Daten so bereitstellen, wie sie von einem Formular mit der post-Methode übermittelt werden, sollte alles funktionieren.

Es wird schwieriger, wenn Sie auch PUT und DELETE Anfragen abdecken müssen.