5 хитростей с cookie для отладки проблем с аутентификацией
Отладка аутентификации в веб-приложениях занимает много времени. Часто приходится тратить время на создание новых аккаунтов или очистку всех cookie, чтобы протестировать разные типы пользователей.
Вы можете протестировать любое состояние, не затрагивая базу данных. Используйте эти пять техник для прямого манипулирования cookie.
- Нацеливайтесь на конкретные cookie вместо полной очистки
Очистка всех cookie уничтожает сессию вашего сервера разработки, local storage и тестовые режимы Stripe. Вместо этого удаляйте только cookie аутентификации.
Распространенные названия включают:
- session
- sid
- auth_token
- _session_id
В DevTools перейдите в Application > Cookies > [ваш домен]. Нажмите правой кнопкой мыши на сессионный cookie и выберите Delete. Это сбросит состояние пользователя до «разлогиненного», сохранив остальные настройки нетронутыми.
- Симулируйте новых пользователей, удаляя флаги онбординга
Приложения используют cookie, чтобы отслеживать, завершил ли пользователь настройку. Ищите названия вроде onboarding_complete или first_visit.
Чтобы протестировать сценарий нового пользователя:
- Экспортируйте текущие cookie.
- Удалите флаг онбординга.
- Перезагрузите страницу.
Это позволяет тестировать ветвления интерфейса без создания нового аккаунта.
- Переключайте роли пользователей за 30 секунд с помощью снимков (snapshots)
Если в вашем приложении есть разные роли, такие как Admin или Guest, не входите и не выходите из системы вручную. Используйте снимки cookie.
- Войдите как Admin. Экспортируйте cookie в файл
admin-session.json. - Войдите как Regular User. Экспортируйте их в
user-session.json. - Чтобы сменить роль, просто импортируйте JSON-файл и перезагрузите страницу.
Сервер доверяет токену сессии. Вы используете валидные сессии, которые уже создали. Храните эти JSON-файлы локально. Они содержат конфиденциальные токены сессий.
- Мгновенно тестируйте истекшие сессии
Не ждите часами, пока сессия истечет. Измените дату истечения вручную.
В DevTools дважды щелкните по столбцу Expires для вашего сессионного cookie. Установите дату в прошлом. Перезагрузите страницу. Вы увидите именно то, что происходит при истечении времени сессии.
- Исправляйте циклы перенаправления при входе (redirect loops)
Циклы часто возникают из-за устаревшего или некорректного cookie. Сессия существует, но сервер ее отклоняет.
Чтобы найти причину:
- Найдите все cookie, связанные с аутентификацией.
- Удаляйте их по одному.
- Перезагружайте страницу после каждого удаления.
Как только цикл прекратится, вы найдете проблемный cookie. Это поможет понять, в чем проблема: в неверном токене или в неправильном домене cookie.
Эти методы работают даже для HttpOnly cookie, так как DevTools и расширения вроде CookieJar работают на уровне браузера.