Reenviar correo de activación - Error 404

Cuando un usuario se registra, el correo electrónico de activación funciona correctamente. Sin embargo, al intentar iniciar sesión y reenviar los correos electrónicos de activación, se produce el siguiente registro de producción:

Started POST "/u/action/send_activation_email" for (removed ip and timestamp)
Processing by UsersController#send_activation_email as */*
Completed 404 Not Found in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 542)

Este error ocurre en todos los contenedores que ejecutan 3.2.0.beta1-dev. “production_errors.log” está vacío.

Pasos para reproducir:

  1. Regístrate con el formulario predeterminado
  2. Ignora el correo electrónico de activación e intenta iniciar sesión
  3. Haz clic en “Reenviar correo electrónico de activación” en la ventana emergente “Aún no puedes iniciar sesión. Te enviamos previamente un correo electrónico de activación a…”
  4. “Ocurrió un error: No se pudo encontrar la URL o el recurso solicitado.”
  5. Haz clic en “Aceptar” y luego aparece la siguiente ventana emergente “Te enviamos otro correo electrónico de activación a…” (Sin embargo, el segundo correo electrónico de activación no se envía realmente)

Veo que la función/acción send_activation_email tiene limitación de velocidad.

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

¿Esto resultaría en el error 404? ¿Hay algún otro registro que pueda consultar para depurar este problema?

1 me gusta

Probando esto en mi sitio de desarrollo local, el problema parece ser que ni los parámetros username ni email se establecen para la solicitud POST que se realiza a /u/action/send_activation_email cuando la solicitud se realiza después de que un usuario que no ha hecho clic en el enlace del correo electrónico de activación intenta iniciar sesión con nombre de usuario/contraseña:

Si, en cambio, el usuario hace clic en el botón “Reenviar correo electrónico de activación” de la página “cuenta creada” que se muestra inmediatamente después de registrar una cuenta, el parámetro username se establece para la solicitud. Como referencia, el botón que está funcionando es este:

Mi suposición sobre lo que está sucediendo es que, para la solicitud que está funcionando, los parámetros para la solicitud POST se establecen en función de los valores que el usuario ingresa cuando completa el formulario de registro.

El error 404 se activa aquí:

1 me gusta

Esto me suena a un error.

Solo agrego una nota de que este problema también impide que los usuarios cuyas cuentas han sido desactivadas desde su página de administrador/usuarios activen el correo electrónico de activación después de que intentan iniciar sesión y hacen clic en el botón “Reenviar correo electrónico de activación”.

Eso causa el mismo error que se ha informado anteriormente.

2 Me gusta

Gracias por el informe @john.sanchirico, y también @simon por el análisis detallado :pray:

Esto se solucionará con

2 Me gusta

Este tema se cerró automáticamente después de 20 horas. Ya no se permiten nuevas respuestas.