在#create之后验证用户

时间:2010-10-21 21:08:33

标签: ruby-on-rails authlogic devise

对于我来说,这似乎一直在各个项目中出现,我想知道是否有人有一个很好的解决方案:

我们有一个带有Authlogic身份验证的Rails应用程序。最初,有一个漂亮,干净,RESTful的ListingsController,要求用户在发布/创建之前登录:

before_filter :require_user, :only => [ :new, :create]

然而,在看到这个实际操作后,我们决定我们需要尝试一个不同的流程,未注册的用户可以在其中填写清单首先的表单,然后提示注册/登录。如果他们放弃注册,我们不需要创建列表。如果他们进行身份验证,我们希望像往常一样使用current_user连接清单。

一些可能的障碍:

  1. 新的列表表单允许用户上传我们使用Paperclip存储的文件。
  2. 身份验证可能通过Facebook或Twitter的一系列重定向发生。
  3. 我觉得这种经过验证的后期创建场景很常见,会有一些资源用于攻击它的标准方法,但我并没有真正发现它。任何人都有一个很好的解决方案或资源吗?

    谢谢!

1 个答案:

答案 0 :(得分:3)

一种解决方案是生成一个唯一的令牌并将其存储在您的模型中(比如Listing.pending_id),然后将相同的令牌写入cookie。稍后,当客户端首次通过身份验证时,您会检查“pending_id”Cookie并将其链接到相关列表(如果找到)。

您必须安排任务删除任何早于(x)的未完成列表,并确保所有待处理的列表都被排除在正常操作之外(搜索,列表等)。根据您的应用程序,您最好创建一个单独的PendingListing模型和数据库表。

这种方法的一个缺点是,如果在一台计算机/浏览器上添加,但在另一台计算机/浏览器上进行身份验证,则无法恢复列表。