sql >> Database teknologi >  >> RDS >> Mysql

Hvordan implementerer man husk mig-funktionen?

Lad os sige, at databasetabellens navn for vedvarende cookie er pcookies med følgende kolonner:

  • cookie_id (CHAR)
  • bruger-id (INT)
  • udløb (DATETIME)
  • salt (CHAR)

Trin til oprettelse af cookies:

  1. Efter vellykket login skal du oprette en cookie-record i databasen under et unikt id. Du kan generere det ved hash_hmac('sha512', $token, $salt) hvor $token=uniqid($user_id, TRUE) og $salt=md5(mt_rand()).
  2. Gem 'bruger-id', 'udløbstid' og 'salt' sammen med 'cookie-id'et' i databasen.
  3. Gem 'cookie-id' og 'token' i cookie.

Godkendelsestrin:

  1. Hvis der er fundet en vedvarende cookie, skal du først kontrollere, om posten er tilgængelig i databasen eller ej.
  2. Hvis posten er tilgængelig, skal du kontrollere, om cookien udløber eller ej.
  3. Hvis cookien ikke udløber, så valider cookie-id'et af $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. Når cookien er valideret, skal du slette den fra databasen og oprette en ny cookie i henhold til ovenstående cookieoprettelsestrin.
  5. Hvis cookien findes som ugyldig, skal du rydde cookien fra enheden og slette alle andre cookie-registreringer for brugeren fra databasen, bemærke brugen om et tyveriforsøg og fortsætte til manuel login-proces.

Bemærkninger:

  • Når sessionen er tilgængelig, ignorer kontrol af cookie.
  • Når du har logget ud, skal du rydde cookien sammen med databaseregistreringen.
  • Tillad aldrig brugere at udføre følsomme anmodninger som ændring af adgangskode eller se kreditkortoplysninger fra et vedvarende cookie-login. Kald adgangskode til login og tilføj et flag i sessionen for at tillade alle videre handlinger.


  1. Kan ikke oprette forbindelse til Postgres DB på grund af godkendelsestype 10 understøttes ikke

  2. Hvordan forvandler man 2 forespørgsler med fælles kolonner (A, B) og (A, C) til kun én (A, B, C)?

  3. Vælg mellem agentbaseret og agentløs overvågning

  4. Tips til migrering fra HAProxy til ProxySQL