我想要一些伪代码或白板建议,以允许在我的网站上进行未经身份验证的投票。我已经查看了有关该主题的相关线程,但我认为我的场景不同,足以保证它自己的线程。
我想支持3 个核心场景。
1) 经过身份验证的用户“Joe Blow”登录我的网站并投票。由于他已通过身份验证,因此他只能投票一次。对于他所做的每一票,我将他的 UserId 存储在数据库中
2) 未经身份验证的用户“Sally”访问我的网站并投票。由于她未经身份验证,我会将她的投票保存在名为“匿名用户来自我的站点”的用户帐户下。
3) 未经身份验证的用户“Zoltan”使用我构建的小部件从托管我的小部件的其他合作伙伴网站访问我的网站。他也可以从该站点投票。我会将他的投票保存在名为“Anonymous-Users-From-A-Partner-Site”的合作伙伴用户帐户下。
这里的转折是我需要支持“Sally”和“Zoltan”对无限数量的事物进行投票的能力。也许莎莉想在一天内对 500 件事情进行投票。也许 Zoltan 想在合作伙伴网站上对 200 件事情进行投票。也许 Sally 有一个月没有重新访问该网站,然后回来对更多内容进行投票。
如何使用 cookie 实现场景 2 和 3?我是否将投票的所有项目 ID 散列在一起?我有哪些选择?
FWIW:我计划在统计选票时做出严格的区分。我会明确表示,匿名投票就是——匿名。人们会理解在查看结果时使用怀疑的程度。但我仍然认为允许未经身份验证的用户投票是有价值的,即使他们可以通过使用多个浏览器或在每次投票后删除他们的 cookie 来玩弄系统。如果在我的网站上投票的用户至少必须这样做,那么我会很满意。
最后:我对使用 EverCookie 之类的东西不感兴趣。对于我的需要,这完全是矫枉过正。