Решение проблемы Invalid Token

Если вы читаете эту статью, то, скорее всего, вы столкнулись с проблемой при авторизации на своем сайте. При попытке войти в админку вам выдает сообщение — Invalid Token.Чаще всего ошибка возникает в том случае, если для сессии пользователя не может быть обнаружен объект user — происходит после переноса сайта с локали на сервер, или переезда на другой хостинг. Если простая чистка кеша сайта не помогает (удаление содержимого папки cache в корне сайта и в папке administrator), не помогает и попытка авторизироваться с www и без www в админке, то далее уже могут быть варианты.

Для  начала обновимся до последней версии — Joomla 1.5.24 (конечно, если же вы используете J! 1.5.x). В ранних версиях проблема доступа Invalid Token была распространенной, и решалась обновлением ядра. Маловероятно, что вы испльзуете столь уж древние версии, но, тем не менее, обновление не помешает в любом случае (если вы фанат хаков ядра — для начала делаем полный бекап сайта, если нет — тоже делаем, на всякий случай). Пробуем залогинится в админке. Если проблема не пропала — читаем дальше и, после каждого действия, проверяем авторизацию на предмет Invalid Token.

Заходим в phpMyAdmin (или другой интерфейс для управления базой данных), выбираем нашу базу и находим таблицу jos_plugins (вместо jos_ может быть другой префикс. Если в базе есть таблицы с разными префиксами, проверьте в конфигурации (configuration.php в корне сайта) строку var $dbprefix дабы выяснить какой префикс нам нужен.
Ищем строку «User – Joomla!» и убеждаемся в том, что плагин включен (в поле «published» значение 1 — включено, 0 — выключено).
Далее ищем плагин «Authentication – Joomla» — аналогично проверяем активность плагина.

Если плагины были включены, проверим также права доступа пользователя. Открываем таблицу jos_users и находим там нашего пользователя (SuperAdmin к примеру). В поле «id» должно быть значение 62. В поле «gid» — 25 или 26.
В таблице jos_core_acl_aro смотрим ячейку id для нашего пользователя — обычно id = 10.
В таблица jos_core_acl_groups_aro_map найдите строку для aro_id 10. Поле group_id должно быть 25 или 26

Находим таблицу jos_session и удалеям все записи. Не удалите по ошибке всю таблицу — нужно всего лишь очистить ее записи. Как правило, после вышеперечисленных действий навязчивый Invalid Token пропадает.

Но не всегда. Иногда Invalid Token может возникнуть вследствие выставления неоправданно большого времени жизни сессии в общих настройках сайта. Для сброса времени жизни сессии необходимо открыть configuration.php и в переменной $lifetime выставить вменяемое время (в секундах).

Также проблема может возникать при использовании сторонних модулей авторизации, прежде всего убедитесь в том, что вы используете стандартный модуль mod_login