Yii2-Rest-API-Benutzer-Authentifizierung
Ich bin Implementierung der Rest-API in yii2. Ich möchte zum authentifizieren des Benutzers mit Hilfe von access-token. Ich habe die genannten verschiedenen SO Antworten wie folgt
Aber ich m nicht klar ist, welche Authentifizierungs-Methode sollte ich benutzen und wie bekomme ich Benutzer-Identität.
Habe ich erstellt findIdentityByAccessToken()
Methode in meine user-Identität-Klasse, wie vorgeschlagen, in Yii2 Rest guide .
Unten ist die behaviour
umgesetzt in meinem controller
public function behaviors() {
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
'except' => ['login','forgot-password']
];
return $behaviors;
}
nun, wie bekomme ich die Identität des Benutzers in meine controller-action? Soweit ich weiß, access token wird von dem web-service im request-header.
Hinweis : ich bin mit Yii2 advanced app
bitte helfen Sie mir.
- Was genau funktioniert nicht? wenn Sie wan ' T zur Verwendung von access tokens implementieren, die HttpBearerAuth Verhalten. wenn es richtig umgesetzt können Sie den Zugriff durch authentifizierte Benutzer mit Yii::$app->user
- Ich m verwirrt über die auth Verhalten sollte ich verwenden für den Zugriff token validation
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfache Antwort, es gibt mehr als eine Möglichkeit, um dieses Verhalten zu implementieren.
Beide
HttpBearerAuth
undHttpBasicAuth
können diefindIdentityByAccessToken()
methode, wenn richtig konfiguriert. das Verhalten, das Sie verwenden sollten, hängt davon ab, wie Sie möchten, dass Benutzer sich zu authentifizieren.wenn Sie Lesen Sie in der Dokumentation
HttpBasisAuth
HttpBasicAuth sehen SieloginByAccesToken
ruft diefindIdentityByAccesToken
methodeSie manipulieren kann dieses Verhalten durch die Definition einer Schließung in der auth-Attribut finden Sie unter auth-Attribut.
HttpBeareAuth
fast das gleiche. es implementiert auch dieloginByAccessToken
Also, was machen die beiden von einander unterscheidet? einfach die Stelle, wo das erhalten der Daten aus. wo
HttpBasicAuth
erwartet, die client hat die basic-header-Beispielheader('Authorization: Basic '. base64_encode("user:password"));
(PHP build-in-Unterstützung für das sehen: http://php.net/manual/en/features.http-auth.php)den
HttpBearerAuth
erwartet, dass die Kopfzeile ist wie folgt definiertheader('Authorization: Bearer '. $token);
Also die Lösung, die Sie verwenden sollten, hängt davon ab, wie Sie möchten, dass Benutzer/Kunden sich zu authentifizieren. Sie können auch die
QueryParamAuth
gibt dem Anwender die Möglichkeit, sich zu authentifizieren, die sich mit einer GET-param sehen queryparamauthUnd wenn Sie möchten, um einen benutzerdefinierten header-sagen wir X-API-Token erstellen Sie Ihre eigenen benutzerdefinierten Klasse, die die
AuthMethod
Schnittstelle sehen AuthMethodHoffe, das hilft