Когда пользователь регистрируется, письмо с активацией работает корректно. Однако при попытке выполнить вход и повторной отправки писем с активацией в лог 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» пуст.
Шаги для воспроизведения:
Зарегистрируйтесь, используя стандартную форму.
Игнорируйте письмо с активацией и попробуйте выполнить вход.
Нажмите «Отправить письмо с активацией повторно» во всплывающем окне «Вы пока не можете войти. Мы ранее отправили вам письмо с активацией…».
Появляется сообщение «Произошла ошибка: запрошенный URL или ресурс не найден».
Нажмите «ОК», после чего появляется следующее всплывающее окно: «Мы отправили вам еще одно письмо с активацией на…» (однако второе письмо с активацией фактически не отправляется).
Я вижу, что функция/действие 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? Есть ли какие-либо другие логи, которые я могу изучить для отладки этой проблемы?
При тестировании на локальном dev-сайте проблема, похоже, заключается в том, что параметры username и email не передаются в POST-запрос к /u/action/send_activation_email, когда запрос выполняется после попытки входа пользователя, не перешедшего по ссылке в письме с активацией, с использованием логина и пароля:
Если же пользователь нажимает кнопку «Отправить письмо с активацией повторно» на странице создания аккаунта, которая отображается сразу после регистрации, параметр username передаётся в запросе. Для справки, вот кнопка, которая работает корректно:
Мое предположение о происходящем: для рабочего запроса параметры POST-запроса устанавливаются на основе значений, которые пользователь вводит при заполнении формы регистрации.
Хочу добавить примечание: эта проблема также мешает пользователям, чьи аккаунты были деактивированы через страницу администратора «Пользователи», получить письмо с подтверждением после попытки входа и нажатия кнопки «Отправить письмо с подтверждением повторно».Это приводит к той же ошибке, о которой сообщалось выше.