Повторная отправка письма с активацией — ошибка 404

Когда пользователь регистрируется, письмо с активацией работает корректно. Однако при попытке выполнить вход и повторной отправки писем с активацией в лог production появляется следующее сообщение:

Started POST "/u/action/send_activation_email" for (удален IP и метка времени)
Processing by UsersController#send_activation_email as */*
Completed 404 Not Found in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 542)

Эта ошибка возникает на всех контейнерах, работающих под управлением версии 3.2.0.beta1-dev. Файл «production_errors.log» пуст.

Шаги для воспроизведения:

  1. Зарегистрируйтесь, используя стандартную форму.
  2. Игнорируйте письмо с активацией и попробуйте выполнить вход.
  3. Нажмите «Отправить письмо с активацией повторно» во всплывающем окне «Вы пока не можете войти. Мы ранее отправили вам письмо с активацией…».
  4. Появляется сообщение «Произошла ошибка: запрошенный URL или ресурс не найден».
  5. Нажмите «ОК», после чего появляется следующее всплывающее окно: «Мы отправили вам еще одно письмо с активацией на…» (однако второе письмо с активацией фактически не отправляется).

Я вижу, что функция/действие send_activation_email имеет ограничение по частоте вызовов.

def send_activation_email
    if current_user.blank? || !current_user.staff?
      RateLimiter.new(nil, "activate-hr-#{request.remote_ip}", 30, 1.hour).performed!
      RateLimiter.new(nil, "activate-min-#{request.remote_ip}", 6, 1.minute).performed!
    end

Может ли это стать причиной ошибки 404? Есть ли какие-либо другие логи, которые я могу изучить для отладки этой проблемы?

1 лайк

При тестировании на локальном dev-сайте проблема, похоже, заключается в том, что параметры username и email не передаются в POST-запрос к /u/action/send_activation_email, когда запрос выполняется после попытки входа пользователя, не перешедшего по ссылке в письме с активацией, с использованием логина и пароля:

Если же пользователь нажимает кнопку «Отправить письмо с активацией повторно» на странице создания аккаунта, которая отображается сразу после регистрации, параметр username передаётся в запросе. Для справки, вот кнопка, которая работает корректно:

Мое предположение о происходящем: для рабочего запроса параметры POST-запроса устанавливаются на основе значений, которые пользователь вводит при заполнении формы регистрации.

Ошибка 404 возникает здесь:

1 лайк

Для меня это звучит как ошибка.

Хочу добавить примечание: эта проблема также мешает пользователям, чьи аккаунты были деактивированы через страницу администратора «Пользователи», получить письмо с подтверждением после попытки входа и нажатия кнопки «Отправить письмо с подтверждением повторно».Это приводит к той же ошибке, о которой сообщалось выше.

2 лайка

Спасибо за отчёт @john.sanchirico, а также @simon за подробный анализ :pray:

Это будет исправлено в

2 лайка

Эта тема была автоматически закрыта через 20 часов. Новые ответы больше не принимаются.