Ich bin neu in den Diensten- und rest_server-Modulen (und den RESTful-APIs insgesamt). Nach meinem Verständnis sind die Schritte im Wesentlichen folgende:
- Senden Sie eine Post-Anfrage an / api / user / login mit dem in den Daten festgelegten Benutzernamen und Passwort
- Speichern Sie das Token, das Sie in der Antwort erhalten
- Fügen Sie bei nachfolgenden Post-Anforderungen das Token mit dem Schlüssel X-CSRF-TOKEN zum Header hinzu
Wenn ich dazu die Postman Chrome-Erweiterung verwende, funktioniert das hervorragend. Wenn ich es im Code mache, funktioniert api / user / login in Ordnung, ich erhalte das Token, aber wenn ich versuche, auf / api / other / endpoint zuzugreifen, wird 403 Zugriff für anonymen Benutzerfehler verweigert.
Die erste Anfrage (/ user / login) sieht folgendermaßen aus:
POST /api/user/login HTTP/1.0
Content-Type: application/json
Accept: application/json
User-Agent: Drupal (+http://drupal.org/)
Host: mysiteurl.com
Content-Length: 41
{"username":"NAME","password":"PASSWORD"}
Und die zweite Anfrage (/ other / endpoint) sieht folgendermaßen aus:
POST /api/other/endpoint HTTP/1.0
Content-Type: application/json
Accept: application/json
X-CSRF-TOKEN: vGJm5GNDGumf-SoHnLsBU6d46EkrOZkvUY0CSa08GA0
User-Agent: Drupal (+http://drupal.org/)
Host: mysiteurl.com
Content-Length: 0
Wenn ich nach der Authentifizierung Anfragen an / user / token stelle, erhalte ich jedes Mal neue Token. Wenn ich versuche, mich sofort nach dem Anmelden abzumelden (und dieses Token mitzusenden), erhalte ich die Meldung "406 nicht akzeptabel: Benutzer ist nicht angemeldet". Error. Es sagt mir, dass der Benutzer nicht angemeldet ist.
Wenn ich die Site jedoch überprüfe, wird dem Benutzer angezeigt, dass er sich erfolgreich angemeldet hat und nachträglich noch angemeldet ist.
Muss ich etwas bezüglich des Sitzungsnamens / der ID oder des Cookies speichern / senden? Alles, was ich mir angesehen habe, deutet darauf hin, dass nur das Sitzungstoken erforderlich ist.
Session authentication
unteradmin/structure/services/list/[my-endpoint]
und alle Caches gelöscht?