Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie implementiert man die Remember-Me-Funktion?

Angenommen, der Name der Datenbanktabelle für dauerhafte Cookies ist pcookies mit den folgenden Spalten:

  • cookie_id (CHAR)
  • user_id (INT)
  • Ablauf (DATETIME)
  • Salz (CHAR)

Schritte zur Cookie-Erstellung:

  1. Erstellen Sie nach erfolgreicher Anmeldung einen Cookie-Datensatz in der Datenbank unter einer eindeutigen ID. Sie können es mit hash_hmac('sha512', $token, $salt) generieren, wobei $token=uniqid($user_id, TRUE) und $salt=md5(mt_rand()).
  2. Speichern Sie „Benutzer-ID“, „Ablaufzeit“ und „Salz“ zusammen mit der „Cookie-ID“ in der Datenbank.
  3. Speichern Sie „Cookie-ID“ und „Token“ im Cookie.

Authentifizierungsschritte:

  1. Wenn ein dauerhaftes Cookie gefunden wird, überprüfen Sie zuerst, ob der Datensatz in der Datenbank verfügbar ist oder nicht.
  2. Wenn der Datensatz verfügbar ist, prüfen Sie, ob das Cookie abläuft oder nicht.
  3. Wenn das Cookie nicht abläuft, validieren Sie die Cookie-ID mit $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. Sobald das Cookie validiert ist, löschen Sie es aus der Datenbank und erstellen Sie ein neues Cookie gemäß den obigen Schritten zur Cookie-Erstellung.
  5. Wenn das Cookie als ungültig befunden wird, löschen Sie das Cookie vom Gerät und löschen Sie alle anderen Cookie-Datensätze des Benutzers aus der Datenbank, melden Sie die Verwendung über einen Diebstahlversuch und fahren Sie mit dem manuellen Anmeldevorgang fort.

Hinweise:

  • Ignorieren Sie das Überprüfungs-Cookie, wenn eine Sitzung verfügbar ist.
  • Löschen Sie nach dem Abmelden das Cookie zusammen mit dem Datenbankeintrag.
  • Gestatten Sie Benutzern niemals, vertrauliche Anfragen wie Passwortänderungen auszuführen oder Kreditkarteninformationen von einer permanenten Cookie-Anmeldung aus anzuzeigen. Rufen Sie das Passwort auf, um sich anzumelden, und fügen Sie ein Flag in der Sitzung hinzu, um alle weiteren Operationen zuzulassen.