如何"不要投票两次"机制

时间:2015-09-29 21:51:21

标签: node.js html5 web-applications redis vote

我正在考虑创建一个投票应用。一般的想法是

  • 浏览图库
  • 一张令人敬畏的照片吸引了你的注意力
  • 点击下面的投票按钮
  • 代码魔术发生
  • 投票计算
  • 在某个特定日期,投票按钮变为非活动且应用计数 投票

这将是一个网络应用程序,这意味着html5-css3-express.js-redis框架或类似的东西。

如何确保用户不能两次投票给同一张照片?通过让他注册?只是一个投票应用程序的巨大程序,你不觉得?另外,我想我还需要一个CAPTCHA的东西来避免不必要的大规模注册。

但是,如果我使用HTML5本地存储API的coockies,是什么阻止同一个用户清除他/她的coockies并一次又一次地投票给同一张照片?

最好的方法是什么?

非常感谢

3 个答案:

答案 0 :(得分:1)

最安全的方法是使用帐户来跟踪投票的人。帐户很容易在您的应用程序中实现,如果您使用Passport.js这样的服务,您甚至不需要自己保存帐户数据。您可能已经设置了数据库,这样也可以轻松保存帐户数据。

另一种方法是跟踪IP地址,但这有一些问题(例如,如果用户使用代理)。另外一个IP地址将覆盖网络上的所有客户端意味着如果一个人对一个图像进行投票,其他人将无法在之后。

答案 1 :(得分:0)

简单的方法可能是使用npm package mongoose-voting,其中所有投票逻辑都已实现。

还需要跟踪用户,因此如果您不希望用户注册,您可以使用访问者的IP地址作为用户ID自动创建用户。

有许多方法可以操纵投票结果,但在您描述的级别上,大多数都是不必要的。

答案 2 :(得分:-2)

这些天你不需要建立一个登录系统,因为你可以使用任何开放的id登录authentication.E.g提供商是facebook,google,yahoo和twitter。