【问题标题】:Rails 3.0 Devise reset Password by answering a questionRails 3.0 通过回答问题设计重置密码
【发布时间】:2011-06-15 21:03:35
【问题描述】:

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

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

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

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

提前感谢您的帮助。

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

【问题讨论】:

  • 你能提供一些代码吗?你已经拥有什么,什么不起作用等等……

标签: ruby-on-rails ruby-on-rails-3 passwords devise


【解决方案1】:

实际上我以前没有使用过 Devise,但是假设您的控制器上有一个 befor_filter 来路由到 Devise 身份验证,您可能会执行以下操作:

skip_before_filter :authenticate_with_devise if user_answered_question_correctly?

【讨论】:

    【解决方案2】:

    这个 gem 有一个 security_questionable 功能可以解决问题,除此之外https://github.com/phatworx/devise_security_extension

    【讨论】:

    • 你试过这个包吗?我无法让 security_questionable 功能发挥作用。当我尝试创建问题时,我得到“无法批量分配受保护的属性”。
    【解决方案3】:

    您无需为此覆盖 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 链接更改为您自己的链接。
    4. 利润

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2011-08-30
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多