Приложение I унаследовал имеет следующие действия для обновления профиля пользователя:Как написать и проверить изменения пароля при использовании 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
Форма, PUT
с (на самом деле POST
s с _method=PUT
) к этой акции имеет password
и password_confirmation
поле, но не old_password
поля , Я заметил через тестирование, что мне даже не нужно заполнять поле password_confirmation
.
Первый вопрос: существует ли более простой способ изменения пароля при использовании Authlogic?
Второй вопрос: существует ли какая-либо литература по лучшим практикам (особенно с точки зрения удобства использования) при изменении пароля? Должна ли она быть отдельной формой, не смешанной с другими полями пользователя?
Третий вопрос: Большинство сайтов имеют поле old_password
, но Authlogic, похоже, не поддерживает это изначально. Каким образом Authlogic-ey подтверждает, что на самом деле пользователь сам меняет пароль, а не тот, кто взломал их сессию?
Причина, по которой у меня возникли проблемы с получением пароля для обновления, является то, что я выполнял '{@user = Factory (: user), UserSession.create (@user)} 'в общем блоке настройки, затем снова выполнив' {@user = Factory (: user)} 'во внутреннем блоке настройки и проверив изменение пароля для этого пользователя, но фактически изменив его на внешнем. D'о! –