我想跟踪匿名用户操作,就好像用户会被身份验证一样。目标是让用户执行操作(通常保留给经过身份验证的用户),将其保存在具有特殊状态的数据库中(在用户登录到应用程序之前不可见)。
例如匿名用户回复评论。系统检测到用户未登录,保存具有特殊状态"等待身份验证"的注释。系统要求用户登录,以完成评论的注册。用户登录到应用程序。系统检查"等待身份验证"状态,并将条目更新/关联到经过身份验证的用户。
您对实现此类功能有什么建议/经验吗?也许Symfony已经在功能/捆绑包中了?
您要做的是类似于延迟注册,这是一个经过验证的概念。它在stackoverflow中得到了很好的实现。它允许您在提供电子邮件地址后发布消息。 它的工作原理与此类似: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
IP地址,但它不会非常有效,因为一个用户可以从多个IP地址(wifi,3G/4G连接...您可以依靠cookie,但是一旦他从另一台设备登录,您将无法对此执行任何操作。
IMO,您应该保存操作并将它们链接到您发送给匿名用户的 uniq 令牌,一旦他通过身份验证,他就可以提供生成的令牌,然后您为该用户保存操作。小心不要忘记在"识别"保存的匿名操作后将其删除。