Сброс или восстановление пароля в Modx Evolution
В очередной раз столкнулся с проблемой со входом в админку: забыл пароль от тестового сайта. Так как сталкиваюсь с этим уже не первый раз решил записать решение сюда, чтобы потом не искать.
Перед тем, как будет произведена процедура изменения пароля, что нужно знать о системе хранения паролей пользователей в ModX. В данной системе управления есть два типа пользователей, это веб-пользователи, пользователи которые зарегистрированы на сайте, но не имеют доступа к панели управления, и пользователи самой системы управления, которые имеют доступ к панели управления (manager users). Нас интересует как раз вторая группа.
Нас будет интересовать две таблицы, первая это
префикс_manager_users
в которой хранится имя пользователя и хеш пароля. Вторая таблица, которая нас будет интересовать, это
префикс_user_attributes
в которой хранятся атрибуты пользователя.
В таблице префикс_user_attributes нас будет интересовать два поля, это blockeduntil и failedlogincount. Из названий примерно понятно за что они отвечают, однако поясню. Когда мы пробуем залогинится с неверным паролем, система считает количество неверных попыток, которые записываются в поле failedlogincount. Когда количество отметок достигнет критического (по умолчанию это 3 попытки) в поле blockeduntil будет записано время до которого данный пользователь будет заблокирован. Так что, даже если мы поменяем пароль, то зайти все равно не сможем. Так что, если мы каким-то образом заблокировали пользователя большим количеством попыток входа в систему, первое что надо сделать, это очистить эти два поля. С этим разобрались, едем дальше.
В таблице префикс_manager_users хранится имя и хеш пароля, полученный через функцию MD5. По данному хешу можно попровать восстановить пароль, так как в сети есть базы хешей, но сейчас нам это не интересно. Нам надо быстро сбросить пароль и снова получить доступ к админке. Для этого воспользуемся или функцией md5() в любом из языков программирования или воспользуемся хешем слова password (5f4dcc3b5aa765d61d8327deb882cf99). В поле password таблицы префикс_manager_users запишем либо сгененрированный нами хеш или хеш приведенный выше. После этого мы можем свободно зайти в админку используя нашего пользователя и слово password в качестве пароля.
Еще такой момент, что мы будем делать при отсутствии веб-интерфейса к MySQL, о котором я упоминал про то, как сбросить AUTO_INCREMENT. Решение простое, воспользуемся синтаксисом MySQL.
UPDATE `база_данных`.`префикс_manager_users` SET `password` = MD5('пароль') WHERE `префикс_manager_users`.`username` = 'имя пользователя';
Комментарии (0)