Die REST-API arbeitet ohne Authentifizierungsmethoden. Jetzt wollte ich REST-API mit OAuth2-Authentifizierung für API-Anfragen über mobile Anwendung authentifizieren. Ich habe versucht mit yii2 Anleitung, aber es hat nicht für mich funktioniert.
grundsätzlich mobile Benutzer müssen sich mit Benutzername & amp; Passwort, wenn ein Benutzername und ein Passwort korrekt sind, muss der Benutzer sich anmelden und weitere API-Anfragen müssen mit Token validiert werden.
Muss ich einen benutzerdefinierten OAuth 2-Client wie diesen erstellen? Erstellen eigener Auth-Clients
>access_token Feld in Benutzertabelle ist leer. Muss ich es manuell speichern? wie man access_token als Antwort zurückgibt?
Gibt es einen Grund, alle drei Methoden (HttpBasicAuth, HttpBearerAuth, QueryParamAuth) gleichzeitig zu benutzen, warum? Wie?
Meine Anwendungsverzeichnisstruktur sieht wie folgt aus.
%Vor%api \ module \ v1 \ Module.php
%Vor%api \ module \ v1 \ controllers \ CountryController.php
%Vor%common \ models \ Benutzer.php
%Vor%Benutzertabelle
%Vor%access_token wurde nach der Migration der Benutzertabelle hinzugefügt
Sie können Ihr Auth-System erstellen, normalerweise mache ich es. Sie können Token für jeden Benutzer speichern und danach den Benutzer mit diesem Token authentifizieren. In jeder Aktion können Sie dieses Token zum Authentifizieren des Benutzers senden.
Sie müssen Folgendes tun:
Sie können Codebeispiele in meiner Antwort auf eine andere Frage finden hier
Ich verwende JWT zur Validierung der Anfrage. Grundsätzlich ist JWT ein Token, das auch Informationen über einen Benutzer und über das Token selbst wie die Gültigkeit und die Ablaufzeit des Tokens enthält. Sie können mehr über JWT hier lesen.
Der Ablauf meiner Anwendung ist so:
Wenn ein Benutzer angemeldet ist, erstellen Sie zuerst eine JWT für den Benutzer
%Vor%Dann muss der Client (z. B. die mobile Anwendung) das Token bei jeder Anfrage über den Autorisierungsheader bereitstellen. Der Header sieht wie folgt aus:
Authorization:Bearer [the JWT token without bracket]
Fügen Sie im Benutzermodell eine Methode wie diese zum Überprüfen des Tokens hinzu:
%Vor%Die JWT-Bibliothek löst eine Ausnahme aus, wenn das Token nicht mehr ungültig ist (manipuliert wurde oder die Verfallszeit überschritten hat).
Fügen Sie das dann der Verhaltensfunktion in jedem Controller hinzu:
%Vor%Das ist es! Ich hoffe, das funktioniert so, wie du es wolltest. Oh, und es gibt viele JWT-Bibliotheken, die Sie verwenden können (Sie können es hier sehen), aber ich persönlich benutze diese Bibliothek von Leuten aus dem Firebase
Tags und Links api rest oauth-2.0 yii2 yii2-advanced-app