Что делать, если после успешного логина интерфейс сломан
Что проверяют
Умеете ли вы локализовать отказ, а не чинить наугад. Для бэкенда на Python вопрос звучит так: докажите, что проблема на вашей стороне или не на вашей, и сделайте это за несколько запросов, а не за день переписки с фронтендом.
Как отвечать
Первым делом снимите границу. Повторите сценарий без браузера, обычным клиентом: логин, затем те запросы, которые страница делает сразу после него.
s = httpx.Client(base_url=BASE)
r = s.post("/api/login", json=creds)
me = s.get("/api/me", headers={"Authorization": f"Bearer {token}"})Если данные приходят правильные, ломается отрисовка, и это к фронтенду. Если нет, идите по частым причинам:
- ответ формально успешный, но пустой: сериализатор отдал профиль или права без нужных полей, и интерфейс прячет блоки;
- на следующих запросах 401 или 403: кука сессии не уходит на другой домен без атрибутов
SameSite=None; Secure, либо ответ приходит безAccess-Control-Allow-Credentials; - сессия хранится в памяти процесса, а воркеров несколько: запрос попал в соседний, и пользователь наполовину анонимный;
- профиль создаётся асинхронно, фронт успевает спросить раньше, чем строка появилась.
Опирайтесь на сквозной идентификатор запроса в логах: он связывает ответ, который увидел пользователь, с трассой на сервере. Дальше заводите баг с шагами и конкретным ответом, а не с фразой «после логина всё сломалось».
Где спотыкаются
Начинают с правки кода. Пока сценарий не воспроизведён, любое изменение это угадывание, а починенным оказывается симптом на своей машине.
Второе: смотрят только в логи приложения. Запрос мог не дойти до Python вовсе: его срезал обратный прокси, проверка источника запроса или редирект, потерявший заголовок авторизации.
Третье: докладывают проблему без данных. Без кода ответа, тела и идентификатора запроса обсуждение превращается в спор о впечатлениях, а не в поиск причины.