Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL, jak sprawić, by wartość wygasła?

Obok Twojego resetkey kolumna umieść DATETIME kolumna o nazwie, być może, expires .

Następnie, za każdym razem, gdy wstawiasz nowy klucz resetowania, wstawiaj również wartość do wygaśnięcia:

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

Tuż przed odczytaniem jakiegokolwiek klucza resetowania z tabeli, zrób tak:

DELETE FROM forgot WHERE expires < NOW()

Wtedy nigdy nie zobaczysz wygasłego klucza; zawsze zostaną wymazane, jeśli wygasną.

Teraz możesz zrobić coś, szukając klucza resetowania dostarczonego przez użytkownika. Jeśli wygasł, możesz poinformować użytkownika:„Twój klucz resetowania wygasł”. Ale to zły pomysł ... ze względów bezpieczeństwa nie powinieneś pomagać użytkownikom zrozumieć, dlaczego token bezpieczeństwa, taki jak klucz resetowania, jest nieprawidłowy. Po prostu powiedz „ten klawisz resetowania jest nieprawidłowy”.

Czy to otwiera możliwość, że niektóre wiersze zawierające wygasły token pozostaną w tabeli? Tak. Ale nie będzie możliwe, aby Twoja aplikacja faktycznie je odczytała i użyła, jeśli wykonasz procedurę usuwania wygasłych przed użyciem jakichkolwiek tokenów. Jeśli miałbyś powód, aby uniknąć trzymania w tabeli wygasłych tokenów, nawet jeśli są one bezużyteczne, możesz skonfigurować EVENT lub inny rodzaj regularnie zaplanowanego zadania, aby uruchomić DELETE oświadczenie, o którym wspomniałem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:szukaj tego samego ciągu w wielu kolumnach

  2. Nie udało się załadować klasy sterownika com.mysql.jdbc.Driver

  3. MySQL INSERT INTO table VALUES.. vs INSERT INTO table SET

  4. warunkowe sprzężenie w mysql

  5. Jak utworzyć bazę danych w MySQL Workbench za pomocą GUI