Wenn sich ein Benutzer anmeldet, funktioniert die Aktivierungs-E-Mail einwandfrei. Der Versuch, sich anzumelden und Aktivierungs-E-Mails erneut zu senden, führt jedoch zu folgenden Produktionsprotokollen:
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)
Dieser Fehler tritt auf allen Containern auf, auf denen 3.2.0.beta1-dev ausgeführt wird. „production_errors.log“ ist leer.
Schritte zur Reproduktion:
Melden Sie sich mit dem Standardformular an
Ignorieren Sie die Aktivierungs-E-Mail und versuchen Sie, sich anzumelden
Klicken Sie im Popup „Sie können sich noch nicht anmelden. Wir haben Ihnen zuvor eine Aktivierungs-E-Mail gesendet…“ auf „Aktivierungs-E-Mail erneut senden“.
„Ein Fehler ist aufgetreten: Die angeforderte URL oder Ressource konnte nicht gefunden werden.“
Klicken Sie auf „OK“ und dann erscheint das folgende Popup „Wir haben Ihnen eine weitere Aktivierungs-E-Mail gesendet an…“ (Die zweite Aktivierungs-E-Mail wird jedoch nicht tatsächlich gesendet)
Ich sehe, dass die Funktion/Aktion send_activation_email Ratenbegrenzungen unterliegt.
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
Würde dies zu dem 404-Fehler führen? Gibt es andere Protokolle, die ich zur Fehlerbehebung dieses Problems einsehen kann?
Ich teste dies auf meiner lokalen Entwicklungswebsite. Das Problem scheint zu sein, dass weder die Parameter username noch email für die POST-Anfrage gesetzt werden, die an /u/action/send_activation_email gesendet wird, wenn die Anfrage nach einem Benutzer erfolgt, der den Link in der Aktivierungs-E-Mail nicht angeklickt hat, versucht, sich mit Benutzername/Passwort anzumelden:
Wenn der Benutzer stattdessen auf die Schaltfläche “Aktivierungs-E-Mail erneut senden” auf der Seite “Konto erstellt” klickt, die unmittelbar nach der Registrierung eines Kontos angezeigt wird, wird der Parameter username für die Anfrage gesetzt. Als Referenz, die Schaltfläche, die funktioniert, ist diese:
Meine Vermutung, was passiert, ist, dass für die Anfrage, die funktioniert, die Parameter für die POST-Anfrage basierend auf den Werten gesetzt werden, die der Benutzer bei der Anmeldung eingibt.
Nur eine Anmerkung, dass dieses Problem auch Benutzer daran hindert, die nach der Deaktivierung ihres Kontos über die Seite “Admin / Benutzer” die Aktivierungs-E-Mail auslösen können, nachdem sie versucht haben, sich anzumelden und auf die Schaltfläche “Aktivierungs-E-Mail erneut senden” geklickt haben.
Dies verursacht denselben Fehler wie oben berichtet.