Наверное, каждый сталкивался с ошибкой при попытке авторизации с не валидными данными, которая по-английски звучит так
Sorry, there have been more than 5 failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.
а по-русски
Аккаунт временно заблокирован по причине более чем 5 неудачных попыток входа. Попробуйте войти позже, или запросите новый пароль.
Это простая самооборона Друпала, которая активируется после 5 (по умолчанию) попыток входа. Таким образом, система не позволяет злоумышленникам забрутофорсить (англ. brute force. Cм. Полный перебор) сайт. Работает она достаточно просто: во время каждой авторизации, Друпал сохраняет ip-адрес пользователя, запоминая при этом, точную дату события и дату окончания "срока годности" попытки.
Вот некоторые нюансы:
- По умолчанию "срок годности" составляет 1 земной час.
- Количество возможных, неудачных попыток входа - 5.
- Эти значения могут быть изменены.
- Вместо ip-адреса может быть сохранено имя хоста.
- Данные, у которых истек "срок годности" очищаются только по крону.
- Вы можете войти в систему, в любом случае если пройдете процедуру "Сброса пароля"!
Вот еще один интересный факт:
Вы можете имя пользователя указать верно, но при этом 5 раз ошибиться с паролем. В таком случае, попытки авторизации будут запрещены на 6 часов. При этом, через 60 минут можно будет повторить попытку входа, но с другого ip-адреса.
Что касается простых смертных - мы разобрались. Администраторы, же или программисты могут сталкиваться с этой проблемой чаще, т.к. им хлеб в рот не клади, дай только что-нибудь сломать. К счастью, для тех у кого есть доступ к Драшу или напрямую к базе могут обойтись без сброса пароля или часового ожидания. Нужно просто почистить таблицу flood. Вот восемь способов это сделать.
# Очистить все.
drush sqlq "DELETE FROM flood";
# Снять блокировку для существующего пользователя с id=1.
drush sqlq "DELETE FROM flood WHERE event = 'failed_login_attempt_user' AND identifier LIKE '1-%'";
# Очистить данные для определенного ip адреса.
drush sqlq "DELETE FROM flood WHERE event = 'failed_login_attempt_user' AND identifier LIKE '127.0.0.1'";
# Если вы не имеете установленного Drush, тогда заходим в консоль базы и выполняем запросы "на живую".
mysql> DELETE FROM flood;
mysql> DELETE FROM flood WHERE event = 'failed_login_attempt_user' AND identifier LIKE '1-%';
mysql> DELETE FROM flood WHERE event = 'failed_login_attempt_user' AND identifier LIKE '127.0.0.1';
Проблемы, ошибки, неточности в тексте пишите в комментах.