7

我正在考虑在 Rails 中实现某种形式的匿名用户系统。我需要让人们做事(创建记录、查看他们创建的内容等),而无需实际创建帐户。一旦他们创建了一个帐户,一切都会持续存在,而不会因清除 cookie 或其他东西而丢失它。

现在,我认为这很简单。在 User 模型中有一个 is_anonymous 字段,并使用类似这样的东西来访问当前登录的用户:

def find_user
  session[:user_id] ||= create_new_anonymous_user.id
end

假设会话持续了一段合理的时间,并且会话 cookie 没有过期,那应该可以让一切顺利运行。

然而,我的这一部分确信我错过了一些与安全相关的东西。有没有人做过这样的事情?我错过了一些非常明显的东西吗?

谢谢!

4

4 回答 4

4

唯一真正的安全问题是这些匿名用户是否可以执行关键操作。

您的系统意味着任何拥有特定 cookie 的人都可以访问该网站。不一定是大问题,但这实际上取决于您的用户提供的信息类型。

我过去做过类似的事情(在我的情况下,我正在通过网站跟踪进度,当用户登录或注册时,我将“访客”数据附加到他们的帐户中。当您进行切换时,请确保删除匿名记录以防止进一步访问,应该没问题。

于 2009-01-10T04:33:26.587 回答
2

I just found a pretty cool example of "trial users" using Authlogic: http://github.com/gisikw/authlogic_trial

于 2009-10-13T15:53:30.493 回答
0

假设会话持续了一段合理的时间,并且会话 cookie 没有过期,那应该可以让一切顺利运行。

也许您应该为新用户设置一个单独的长期 cookie,以便他们可以拥有多个会话(至少来自该浏览器)。

于 2009-01-07T18:32:12.037 回答
0

您确定要让人们创建与可能不存在的帐户相关联的对象吗?不幸的是,我不太了解您的应用程序实际上在做什么,但我认为沿着这条路走下去可能会给您留下一堆没有真正“拥有”任何真正用户的孤立对象。

If you really do want to do this I think what you have is decent. You could be creating a real user, flagged as "guest" (or whatever) and once the user wants to really register they are prompted for other information and unflagged. You should add access control for guest vs non-guest, etc.

于 2009-01-10T20:58:50.373 回答