【问题标题】:Best Method for Preventing a user from voting multiple times in a Multi-Tenant environment防止用户在多租户环境中多次投票的最佳方法
【发布时间】:2014-05-31 10:16:30
【问题描述】:

首先,我知道关于防止用户对单个主题或区域投多票这一主题发布了许多相关问题。我已经阅读了大部分已经获得答案的书。但我的情况与我读过的情况略有不同,我正在寻找一种合适的好方法作为答案或建议。

我的网站是一个多租户环境。因此,用户可以对其他用户的网站贡献进行投票,但他们必须登录才能这样做。阅读其他帖子,我想我已经涵盖了这个问题。

因此,如果我有,假设 10 个用户每个都有自己的网站贡献,并且这些用户中的成员#1 投票给成员#2。我看不出如何实施 cookie 来解决来自同一用户的多票问题,并且仍然允许 Member#1 为 Member#3 投票。希望这是有道理的。

简而言之,鉴于上述情况;我想禁止成员#1 再次投票给成员#2,但不禁止成员投票给成员#3 或 4 或 5 等。除非他们已经投票给这些成员。

如果可能的话,我需要一种优雅但相当简单的方法来做到这一点。我曾想过使用一些数据库表来实现这一点,但随着网站的发展,这似乎可能会变成不合理的大量数据来执行这样一个简单的规则。

Cookie 听起来不错,但我不确定我将如何处理管理规则,以免完全禁止用户进行任何投票,而只允许他们尚未投票的用户。

我正在使用带有 Raty Star 投票系统的 MVC4。

【问题讨论】:

  • 我认为实现这一点的唯一方法是使用数据库或其他形式的持久存储(平面文件)。如果您设置了 cookie,用户可以轻松清除 cookie,然后再次投票。

标签: c# javascript asp.net-mvc asp.net-mvc-4 cookies


【解决方案1】:

您不能在客户端执行此操作。相反,当用户投票时,将投票发送到您的服务器并将其记录在服务器端(几乎可以肯定在数据库中)。是的,服务器端存储(数据库表或您使用的任何东西)的大小会随着时间的推移而增长,但您不能依赖 any 客户端机制来执行此操作。防止重复投票的唯一方法是存储已进行的投票,而您唯一可以合理地做到这一点的地方是用户无法获取的地方。

【讨论】:

  • 谢谢大家。我实际上希望有一个替代解决方案作为答案,但它就是这样。我将实现逻辑并将其持久化到数据库中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
  • 2012-01-30
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多