Rails 3.0通过回答问题来设置重置密码

我正在使用带有rails 3的设计。在用户模型中,我已经为该问题的问题和答案创建了字段。

我想知道如何在以下逻辑中实现忘记密码:

  1. 忘记密码页面用户输入用户名
  2. 在下一步,应用程序应显示存储在db中的问题。
  3. 如果答案与存储在db中的值匹配,则用户回答问题并且app匹配答案。
  4. 它重定向到编辑可以更新密码的密码页面。

我试图覆盖设计的密码控制器,但卡住了。

提前感谢您的帮助。

注意:我是rails的新手,也是我的第一个项目

我之前没有使用过Devise,但假设你的控制器上有一个befor_filter来路由到Devise身份validation,你可以做类似的事情:

skip_before_filter :authenticate_with_devise if user_answered_question_correctly? 

这个gem有一个security_questionablefunction,可以解决这个问题,其中包括https://github.com/phatworx/devise_security_extension

您不需要为此重写Devise

  1. 制作自己的forget_password路线:

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链接到您自己的forgot password
  4. 利润