Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL как да накарам стойността да изтече?

До вашия resetkey колона поставете DATETIME колона, наречена, може би, expires .

След това, когато вмъкнете нов ключ за нулиране, вмъкнете и стойност в expires:

INSERT INTO forgot (resetkey, expires) VALUES (whatever, NOW() + INTERVAL 48 HOUR)

Точно преди да прочетете който и да е ключ за нулиране от таблицата, направете това:

DELETE FROM forgot WHERE expires < NOW()

Тогава никога няма да видите изтекъл ключ; те винаги ще бъдат изтрити, ако са изтекли.

Сега можете да изберете да направите нещо, като потърсите предоставен от потребителя ключ за нулиране. Ако е изтекъл, можете да съобщите това на потребителя:„Вашият ключ за нулиране е изтекъл.“ Но това е лоша идея ... от съображения за сигурност не трябва да помагате на потребителите да разберат защо токен за сигурност като ключ за нулиране е невалиден. Трябва просто да кажете „този ключ за нулиране не е правилен.“

Това оставя ли отворена възможността някои редове, съдържащи токен с изтекъл срок, да останат в таблицата? да. Но няма да е възможно приложението ви действително да ги прочете и използва, ако следвате процедурата за изтриване на изтекъл срок, преди да използвате каквито и да е токени. Ако сте имали причина да избягвате да съхранявате токени с изтекъл срок в таблицата, въпреки че са безполезни, бихте могли да настроите СЪБИТИЕ или някакъв друг вид редовно планирано задание, за да изпълните DELETE изявление, което споменах.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HTML - Промяна\Актуализиране на съдържанието на страницата без опресняване\презареждане на страницата

  2. Емоджитата не се вмъкват в възела на базата данни js mysql

  3. Възможно ли е да се използва резултат от SQL функция като поле в Doctrine?

  4. Генериране и четене на баркод

  5. Как да получите запис с максимална стойност в MySQL