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

3
我正在使用 Rails 3 和 Devise。在用户模型中,我创建了问题和答案字段。

我想知道如何实现以下逻辑的忘记密码功能:

  1. 在忘记密码页面上,用户输入用户名
  2. 在下一步中,应用程序应显示存储在数据库中的问题。
  3. 用户回答问题,并将其与存储在数据库中的值匹配。
  4. 它会重定向到编辑密码页面,其中可以更新密码。

我尝试覆盖 Devise 的密码控制器,但卡住了。

先感谢您的帮助。

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


1
你能提供一些代码吗?你已经有什么了,哪些不起作用等等... - polarblau
3个回答

0

我实际上以前没有使用过Devise,但是假设您在控制器上有一个befor_filter来路由到Devise身份验证,您可能可以这样做:

skip_before_filter :authenticate_with_devise if user_answered_question_correctly?

0

你有试过这个包吗?我一直无法让security_questionable功能正常工作。当我尝试创建问题时,会出现“无法批量分配受保护的属性”的错误提示。 - Panickos Neophytou

0

你不需要覆盖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. 忘记密码 链接更改为您自己的链接。
  4. 获利

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接