Первый ответ: Authlogic дает вам основу, но реализация зависит от вас. Большинство сайтов просто предоставляют страницу «изменить пароль», которая показывает только поля «пароль» и «пароль_конфигурация», или страницу «изменить профиль», которая позволяет ОБНОВИТЬ поля, которые вы хотите изменить в записи пользователя. В зависимости от того, сколько полей в записи вашего пользователя, вы можете выбрать отдельную страницу смены пароля. Вы хотите, чтобы формы были короткими.
Как подтверждение пароля не требуется:
- Для тестирования это зависит от того, как вы имитируете это или что вы тестируете ... это контроллер / формы или модель, которую вы тестируете?
- Является ли require_password_confirmation true ? (по умолчанию)
Второй ответ: вы найдете множество стандартов юзабилити, но я просто иду с KISS. С точки зрения юзабилити большинству людей нравится то, что работает и что установлено - так что проверяйте Google, Facebook и 37 сигналов. Очень простой процесс. Как упоминалось выше, короткие формы являются важной целью юзабилити.
Если вы говорите о требованиях безопасности, вам лучше всего выбрать Соответствие PCI [PDF], в котором изложены несколько правил передачи и хранения финансовых записей, хотя в них не упоминаются учетные данные пользователя. Если вы применили те же правила к учетным записям, что и к кредитным картам, у вас будет действительно безопасная настройка. Поскольку PCI Compliance не справился с поставкой, банки являются еще одним отличным ресурсом для поиска, так как плохая обработка сессий может привести к большим потерям денег. Некоторые из моих банковских счетов теперь подтверждают мои логины и изменения пароля с изображениями и вопросами безопасности над моим стандартным паролем. Я нашел несколько хороших статей, освещающих это .
Что приводит к третьему вопросу ...
Третий ответ: в AuthLogic просто проверьте поле «старый пароль» пользователя, прежде чем продолжить обновление в вашем users_controller с помощью:
@user.valid_password?("old pass")
Вот так:
Добавьте attr_accessor :old_password
в модель своего пользователя
И измените свой пользовательский контроллер на:
def update
@user = current_user
if @user.valid_password?(params[:user][:old_password])
if @user.update_attributes(params[:user].reject{|key, value| key == "old_password"})
flash[:notice] = 'Successfully updated profile.'
redirect_back_or_default root_url
else
render :action => 'edit'
end
else
flash[:warning] = 'Your old password is WRONG! What is your malfunction!?!'
render :action => 'edit'
end
end
(вы можете изменить предупреждение ...)