【问题标题】:How do I implement gradual engagement using Devise and Rails 3?如何使用 Devise 和 Rails 3 实现逐步参与?
【发布时间】:2011-01-17 22:37:28
【问题描述】:

我正在尝试使用 Devise + Rails 实现延迟注册(也称为延迟身份验证,也就是逐步参与)网站流程。

gradual engagement,我的意思是

“不要让用户登录,直到她 绝对必须,但让她玩 并在网站上被记住”

我正在寻找一种使用 devise 的简单方法。我觉得这是许多其他人不得不做的事情,但我还没有找到关于它的文档。

以下方法在我的脑海中听起来不错,所以我将从它开始:

  1. 创建只有“记忆力”的用户
  2. 当访问某些页面时,要求这些用户拥有更多 他们的数据,如用户名和 密码,通过类似 “before_filter :authenticate_user!”在 适当的控制器。

这种方法有意义吗?有更好的吗?您是否愿意分享使用 Devise + Rails 逐步参与注册/注册表单的方法?

【问题讨论】:

    标签: ruby-on-rails devise ruby-on-rails-plugins


    【解决方案1】:

    我认为你给我们的文章的重点是说:

    • 仅在必要时要求注册。

    这是什么意思?

    让我们举个例子。你是一个电子商务网站。

    客户什么时候必须“终于”注册?结帐时。前所未有。因此,您不必存储或记住有关用户的任何信息。 这里从来没有,从来没有使用过。

    您如何管理未登录/注册用户的购物车?我会说数据库,以会话 ID 作为主键。或者您可以将所有项目 id 存储在 cookie 中,以备后用。

    在您的代码中,如果您有一个名为 checkout 的操作,只需在您的控制器中设置一个 before_filter authenticate_user!, :only => [:checkout]

    但也许您有一些限制,例如无需注册即可保留用户的昵称?

    【讨论】:

    【解决方案2】:

    另一种选择是进行仅电子邮件注册,然后发送一封带有特殊链接的电子邮件,以便稍后完成注册/将他们带回他们的帐户。有一个积极维护的关于设计仅电子邮件注册的教程:

    https://github.com/plataformatec/devise/wiki/How-To:-Email-only-sign-up

    我在不久前做过的一个网站上使用了本教程,我们只要求他们的电子邮件地址进行注册,然后发送电子邮件让他们完成注册/添加密码。

    【讨论】:

      【解决方案3】:

      您可以将所有未签名的用户数据保存在 cookie 中,并在用户登录后将其传输到数据库(如果需要)。

      【讨论】:

      • 这不是一个很详细的答案 Mirko... 那我应该用什么方法呢?我试图通过 Devise 的结构来做到这一点。 (这发生在我身上,但我仍在为如何做而苦苦挣扎)
      • 我觉得Pasta给了一个彻底的答案
      • 对于阅读本文并考虑这种方法的任何人,请注意。如果您允许客户端在 cookie(即用户 ID)中提供详细信息,然后您使用服务器端来验证该用户,您需要以某种方式确保他们不只是更改详细信息。例如,用户 ID 1 可能是您自己的管理员。如果您在 cookie 中存储一个用户 ID,然后使用它来决定用户在服务器上看到的内容,那么用户 ID 2 可以轻松地将他们的 cookie 更改为用户 ID 1 并成为您。
      猜你喜欢
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多