我正在考虑在Rails中实现某种形式的匿名用户系统。我需要让人们做事(创建记录,查看他们创建的内容等),而无需实际创建帐户。一旦他们创建了一个帐户,一切都会持续存在,而不会因为清除cookie或其他内容而丢失它。
现在,我认为这很简单。在User模型中有一个is_anonymous字段,并使用类似的东西来访问当前登录的用户:
def find_user
session[:user_id] ||= create_new_anonymous_user.id
end
假设会话持续了一段合理的时间,并且会话cookie没有过期,那应该可以保证一切顺利进行。
但是,有一部分我确信我错过了与安全相关的东西。以前有人做过这样的事吗?我错过了一些非常明显的东西吗?
谢谢!
答案 0 :(得分:4)
唯一真正的安全问题是,如果这些匿名用户可以执行关键操作。
您的系统意味着拥有特定Cookie的任何人都可以访问该网站。不一定是大问题,但它实际上取决于用户提供的信息类型。
我过去做过类似的事情(在我的情况下,我是通过网站跟踪进度,当用户登录或注册时,我将“访客”数据附加到他们的帐户。当您进行切换时,请确保你删除匿名记录以防止进一步访问,它应该没问题。
答案 1 :(得分:2)
我刚刚使用Authlogic找到了一个非常酷的“试用用户”示例:http://github.com/gisikw/authlogic_trial
答案 2 :(得分:0)
假设某些会话持续存在 合理的一段时间,和 会话cookie没有过期,那 应该保持一切运行 顺利进行。
也许您应该为新用户设置一个单独的长期存在的cookie,这样他们就可以有多个会话(至少从该浏览器开始)。
答案 3 :(得分:0)
您确定要让人们创建与可能不存在的帐户绑定的对象吗?不幸的是,我不太了解您的应用程序实际上在做什么,但我认为沿着这条路走下去可能会让您留下一堆孤立的对象,而这些对象并非真正被所有用户“拥有”。
如果你真的做想要这样做,我认为你拥有的是体面的。您可能正在创建一个真实的用户,标记为“访客”(或其他),一旦用户想要真正注册,他们就会被提示输入其他信息并且没有标记。您应该为来宾与非来宾等添加访问控制。