sql >> Databasteknik >  >> RDS >> Mysql

Hur implementerar man kom ihåg mig-funktionen?

Säg att databastabellens namn för beständig cookie är pcookies med följande kolumner:

  • cookie_id (CHAR)
  • användar-id (INT)
  • utgång (DATETIME)
  • salt (CHAR)

Stegen för att skapa cookies:

  1. Efter lyckad inloggning, skapa en cookie-post i databasen under ett unikt ID. Du kan generera den med hash_hmac('sha512', $token, $salt) där $token=uniqid($user_id, TRUE) och $salt=md5(mt_rand()).
  2. Lagra 'användar-id', 'utgångstid' och 'salt' tillsammans med 'cookie-id' i databasen.
  3. Lagra "cookie-id" och "token" i cookie.

Autentiseringssteg:

  1. Om det finns en beständig cookie, kontrollera först om posten är tillgänglig i databasen eller inte.
  2. Om posten är tillgänglig kontrollerar du om cookien förfaller eller inte.
  3. Om cookien inte upphör att gälla, validera cookie-id:t med $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. När cookien har validerats, radera den från databasen och skapa en ny cookie enligt ovanstående steg för att skapa kakor.
  5. Om kakan upptäcks som ogiltig, rensa kakan från enheten och radera alla andra cookieposter för användaren från databasen, notera användningen om ett stöldförsök och fortsätt till manuell inloggning.

Anmärkningar:

  • Ignorera kontroll av cookie när sessionen är tillgänglig.
  • När du har loggat ut rensar du cookien tillsammans med databasposten.
  • Tillåt aldrig användare att utföra känsliga förfrågningar som lösenordsändring eller visa kreditkortsinformation från en ihållande cookie-inloggning. Anropa lösenord för att logga in och lägg till en flagga i sessionen för att tillåta alla vidare operationer.


  1. Använder DBCC CLONEDATABASE och Query Store för testning

  2. Behörighetsproblem i SSMS:SELECT-behörigheten nekades för objektet 'extended_properties', databasen 'mssqlsystem_resource', ... Fel 229)

  3. Orsakas av:android.database.sqlite.SQLiteException:ingen sådan tabell:(kod 1) Android

  4. SQL Server sp_msforeachtable användning för att välja endast de tabeller som uppfyller något villkor