Rails 3.0通过回答问题来设置重置密码
我正在使用带有rails 3的设计。在用户模型中,我已经为该问题的问题和答案创建了字段。
我想知道如何在以下逻辑中实现忘记密码:
- 忘记密码页面用户输入用户名
- 在下一步,应用程序应显示存储在db中的问题。
- 如果答案与存储在db中的值匹配,则用户回答问题并且app匹配答案。
- 它重定向到编辑可以更新密码的密码页面。
我试图覆盖设计的密码控制器,但卡住了。
提前感谢您的帮助。
注意:我是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
。
- 制作自己的
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"
- 创建
app/controller/passwords_controller.rb
并通过表单/渲染填写所需的逻辑。 - 创建视图。
- 更改
forgot password
链接到您自己的forgot password
。 - 利润