Eine Anwendung I hat die folgende Aktion geerbt ein Benutzerprofil für die Aktualisierung:Wie schreibe und teste ich Passwortänderungen bei Verwendung von Authlogic?
class UsersController < ApplicationController
# ...
def update
@user = current_user
if @user.update_attributes(params[:user])
flash[:notice] = "Successfully updated profile."
redirect_to root_url
else
flash[:error] = "Hrm, something went wrong."
render :action => 'edit'
end
end
end
Die Form, dass PUT
s (wirklich POST
s mit einem _method=PUT
) zu dieser Aktion ein password
und password_confirmation
Feld hat, aber kein old_password
Feld . Ich habe durch Tests festgestellt, dass ich nicht einmal das Feld password_confirmation
ausfüllen muss.
Erste Frage: Gibt es eine etabliertere Möglichkeit, eine Passwortänderung bei der Verwendung von Authlogic vorzunehmen?
Zweite Frage: Gibt es Literatur zu Best Practices (vor allem aus Usability-Sicht) über Passwort-Änderungen? Sollte es ein separates Formular sein, das nicht mit anderen Benutzerfeldern gemischt ist?
Dritte Frage: Die meisten Sites haben ein old_password
Feld, aber Authlogic scheint das nativ nicht zu unterstützen. Was ist die Authlogic-ey Weise zu bestätigen, dass es tatsächlich der Benutzer selbst ist, der das Kennwort ändert, anstatt jemand, der ihre Sitzung gehackt hat?
Der Grund, warum ich Probleme hatte, das Kennwort zum Aktualisieren zu bekommen, war, dass ich '' {usus = Factory (: user), UserSession.create (@user)} 'in einem allgemeinen Setup-Block, dann' {@user = Factory (: user)}} erneut in einem inneren Setup-Block und überprüfen Sie die Passwortänderung für diesen Benutzer, aber tatsächlich ändern Sie es auf der äußeren. Oh! –