Rails 3.0 Разработать сброс пароля, ответив на вопрос - PullRequest
3 голосов
/ 26 января 2011

Я использую устройство с рельсами 3. В пользовательской модели я создал поля для вопроса и ответа на этот вопрос.

Я хочу знать, как я могу реализовать пароль забыть в следующей логике:

  1. На странице забытого пароля. Пользователь вводит имя пользователя.
  2. При следующем шаге приложение должно отображать вопрос, сохраненный в дБ.соответствует значениям, хранящимся в БД.
  3. Перенаправляет на страницу редактирования пароля, где пароль может быть обновлен.

Я пытался переопределить контроллер паролей устройства, но застрял.* Спасибо за помощь заранее.

Примечание: я новичок в рельсах, и это мой первый проект

Ответы [ 3 ]

0 голосов
/ 23 мая 2015

этот драгоценный камень имеет функцию security_questionable, которая, помимо прочего, справится с задачей https://github.com/phatworx/devise_security_extension

0 голосов
/ 23 мая 2015

Вам не нужно переопределять Devise для этого.

  1. создайте свои forget_password маршруты:

in routes.rb:

get "forgot_password" => "passwords#forgot"
get "forgot_password/verify_question" => "passwords#verify_question"
post "forgot_password/verify_answer" => "passwords#verify_answer"
post "forgot_password/reset_password" => "passwords#reset"
  1. Создайте app/controller/passwords_controller.rb и заполните необходимую логику с помощью форм / рендера.
  2. Создание просмотров.
  3. Изменить forgot password ссылку на свою собственную.
  4. Прибыль
0 голосов
/ 06 марта 2012

Я на самом деле раньше не использовал Devise, однако, если на вашем контроллере есть befor_filter для маршрутизации к аутентификации Devise, вы могли бы сделать что-то вроде:

skip_before_filter :authenticate_with_devise if user_answered_question_correctly?
...