在不使用帐户的情况下设计Django投票系统

Bel*_*dez 6 python django voting django-forms django-authentication

我们正在考虑实施投票系统(向上,向下投票),而不使用任何类型的凭证 - 没有应用账户,也没有OpenID或任何类型的.

关注点:

  1. 防止机器人投票
  2. 允许NAT下的个人投票而不会压倒/无效其他人的投票
  3. 防止(或者至少使得非常困难)用户不止一次投票

我的问题:

  1. 如果你已经实现了类似的东西,任何提示?
  2. 也许我忽略了任何担忧?
  3. 我应该研究哪些工具?

如果您有任何问题可以帮助您形成对这些问题的答案,请在评论中提问!

dan*_*nny 4

为了解决您的疑虑:

1:一个简单的验证码可能就可以解决问题,如果你用谷歌搜索“django captcha”,有很多插件。我自己从未使用过它们,所以我不能说哪个是最好的。

2 和 3:使用 Django 的会话可以解决这两个问题 - 使用它您可以在用户的​​浏览器上保存一个 cookie 以表明该人已经投票。这显然允许人们通过不同的浏览器或清除缓存来投票,因此这取决于不允许人们投票两次的重要性。不过,我想只有一小部分人会真正考虑尝试清除缓存。据我所知,在没有登录过程的情况下限制用户的唯一其他方法是测试 IP 地址,但这会违反您的第二个标准,因为同一网络上的人会显示为具有相同的 IP 地址。

如果您不希望多次投票像删除浏览器 cookie 这样简单,您还可以允许 facebook 或 twitter 登录 - django-socialregistration 插件有很好的文档记录并且易于实现。

希望有帮助!