Сброс пароля Django allauth не работает при нажатии на ссылку из письма, но работает в других случаях

Что должно произойти:

Запрос полностью обрабатывается пакетом django-allauth, который должен определить токен, сохранить его в сессии, перенаправить на страницу 'change your password' и, наконец, загрузить токен из сессии.

Проблема:

Функция сброса пароля не работает при нажатии на ссылку из письма (Bad Token), но если я копирую-вставляю ссылку в строку url или нажимаю на href в режиме Inspect Element, то она РАБОТАЕТ. Примечание: Она также работает, если

  • Я перезагружаю страницу после появления сообщения "Bad Token"
  • Я нажимаю на ссылку из приложения электронной почты на своем мобильном устройстве

Ошибка:

При нажатии на ссылку из письма вы переходите на страницу "изменить пароль", но получаете ошибку "Bad Token", так как в сессии не было найдено ни одного токена.

Формат ссылки, отправляемой пользователю по электронной почте:

<a href="https://subdomain.url.com/ls/click?upn=DEcd6nIgEEAvb4Zt..." rel="noreferrer" safedirecturl="https://www.google.com/url?q=https://sudomain.url.com/...">link text</a>

Для уточнения, и href, и safedirecturl работают нормально, если я копирую-вставляю их в строку url

Заключение:

Пока это мои единственные предположения о причине проблемы:

  • Внешний веб-сайт направляет пользователя на эту страницу.
    • Работает safedirecturl, что, кажется, противоречит этому.
  • Токен не сохраняется в сессии вовремя (состояние гонки?)
    • Мне это кажется маловероятным, так как в исходном коде django-allauth я видел, что токен устанавливается в сессии перед финальным редиректом.

Я буду очень признателен за любой вклад, поскольку на данный момент я немного в тупике

Вернуться на верх