Symfony 2 跟踪数据库中的匿名用户操作

Symfony 2 track anonymous user actions in database

我想跟踪匿名用户的操作,就好像用户已通过身份验证一样。目标是让用户执行操作(通常保留给经过身份验证的用户),以特殊状态将其保存在数据库中(在用户登录应用程序之前不可见)。

例如, 匿名用户回复评论。 系统检测到用户未登录,以特殊状态'waiting for authentication'保存评论。 系统要求用户登录,以完成评论的注册。 用户登录到应用程序。 系统检查 'waiting for authentication' 状态和 update/associate 用户条目。

您对实现此类功能有什么建议/经验吗?也许 Symfony 已经在 feature/bundle 中了?

您可以使用 ip 地址,但它不会很有效,因为一个用户可以从多个 ip 地址(wifi、3g/4g 连接...)访问您的网站。 您可以依赖 cookie,但一旦他从其他设备登录,您就无能为力了。

IMO,您应该将操作和 link 它们保存到您发送给匿名用户的 uniq 令牌中,一旦他通过身份验证,他就可以提供生成的令牌,然后您为该用户保存操作。注意不要忘记删除已保存的匿名操作,一旦它们是 "identified"。

您尝试做的事情与 惰性注册 类似,这是一个经过验证的概念。它在 Whosebug 上得到了很好的实现。它允许您在提供电子邮件地址后 post 消息。它的工作原理类似于这个: http://www.90percentofeverything.com/2009/03/16/signup-forms-must-die-heres-how-we-killed-ours/

但是,如果您真的想按自己的方式行事,而不要求用户提供电子邮件地址,我建议将数据存储在浏览器 本地存储。它会在后端为您节省大量工作。只有当用户注册时,数据才会传输到后端。通过这种方式,您还可以防止从未注册的用户造成数据库污染。 http://blog.teamtreehouse.com/storing-data-on-the-client-with-localstorage