2016-04-09 3 views
1

Ich sah in einigen Unternehmen REST Web-Service-Dokumentation, in Schritt 1 für APIkey und sie werden Serverzeit und Ablaufzeit und auth_key als Antwort zurückgeben. In Schritt 2 für die Anmeldung Benutzername Passwort und MD5 von beiden apikey und auth_key wird es Session ID zurückgeben. Im verbleibenden Schritt Benutzer nur Sitzungs-ID zu senden. Wie es möglich ist? Ich bin verwirrt, bitte helfen Sie mir jemand in Bezug auf dieseSo verwenden Sie die Sitzung in REST-API

+1

Wie ist was genau möglich? – IceFire

+0

Ich bin neu in der REST-API, also suchte ich nach Session in REST-API: einige Antworten in Stack-Überlauf Ich sah, dass die Verwendung der Sitzung in REST-API nicht möglich, weil wir direkte Anfrage vom Browser nicht so schwer zu erhalten halte session.but in dieser dokumentation sagte sie über session id, deshalb habe ich verwirrt, es ist möglich oder nicht – Arun

Antwort

5

Sie sind nicht tatsächlich die Verwendung einer session im Sinne eines PHP session_start(). Was sie tun können wirklich in wenigen Schritten erklärt werden:

  1. Sie für einen API-Schlüssel fragen:
    1. Der Dienst dann eine auth_key mit einer Lebensdauer
    2. Speichert die api key, erzeugt erzeugt auth_key und expiry zu einer Datenbanktabelle. Die api key ist sehr wahrscheinlich ein eindeutiger Index auf dem Tisch.
    3. Sendet eine Antwort an den Benutzer, der die generierten api key, auth_key und die expiry der Schlüssel enthält.
  2. Sie senden Ihre Login-Daten, zusammen mit der md5(api_key . auth_key): Ich erwarte, dass Sie wahrscheinlich auch senden Sie die api key in einer Kopfzeile.
    1. Es nutzt zunächst die empfangene api key die Datenbank-Tabelle abzufragen
    2. Ruft den auth_key Wert und
    3. Checks Ablauf dass die auth_key nicht überschritten ist; wenn es nicht
    4. das hat Ermittelt md5(api_key . auth_key)
    5. es Vergleichbar die md5(api_key . auth_key) aus Ihrer Anfrage
    6. Wenn es das gleiche ist, dann überprüft es Ihre Login-Daten
    7. Wenn die Login-Daten korrekt sind, es erzeugt unique session_id verbunden mit dem authenticated account
    8. Es speichert diese Details in eine andere Datenbanktabelle: session_id, account_id. Ich benutze Konto ID hier, weil es am wahrscheinlichsten zu verwenden ist.
    9. Es gibt diese session_id an Ihren Kunden
  3. Jeder bitten Sie danach senden mit der session_id arbeitet dann wie folgt:
    1. Sie der session_id aus der Anforderung abrufen
    2. Es wird versucht, die abgerufen werden Konto mit der session_id aus der Datenbank verbunden
    3. Wenn gefunden/gültig und Sie haben Zugriff/Berechtigungen, um die Operation auszuführen, führt es den Befehl.

Zusammenfassend, das heißt der gesamte Fluss; Deshalb habe ich früher gesagt, dass es Sitzungen nicht in der Weise verwendet, wie Sitzungen funktionieren, wenn Sie eine session_start(); das heißt, sie können so etwas wie $_SESSION nicht tun. Sie sollten auch wissen, dass der Versuch, Sitzungen mit session_start für eine RESTful-API auszuführen, NICHT RESTful ist.

+0

Danke, jetzt habe ich richtig verstanden :) – Arun

+0

Da es geholfen hat, kannst du das als Antwort markieren ;-) –

+0

zuerst Zeit, die ich Frage frage, also wusste ich nicht, danke für Ihre Hilfe, markierte ich als Antwort :) – Arun

Verwandte Themen