Rails 2,session&代币

时间:2011-03-22 10:04:40

标签: ruby-on-rails

我有一个问答调查..

只有一位用户可以回答调查问题!用户无法点击上一个按钮(在浏览器中)并再次通过调查。我怎么可能这样做?我需要会话和唯一令牌吗?请帮助我,我坚持这个......

3 个答案:

答案 0 :(得分:1)

必须强制执行此操作然后我想您需要用户登录,然后您可以存储他们已在您的数据库中回答的调查/调查部分。

否则通常会阻止人们通过在系统中存储他们的IP地址多次填写调查,并根据他们已经完成的部分在浏览器上设置cookies。他们可以通过清除他们的cookie解决这个问题,但至少如果你存储他们的IP地址,他们需要更改ip以重做调查。

如果不了解调查的背景,很难说。它是在用户已拥有帐户的现有应用程序上吗?是独立等吗。

答案 1 :(得分:1)

如果您有用户登录,那么您只需要验证他们是否已经投票。这确实需要100%确定没有重复投票。

如果没有,你不能100%保证重复投票,但你可能会很难:

  • 存储在会话中[:voted] = true
  • 收到投票后,如果会话[:voteed] == true
  • ,则不接受

显然,用户可以清除会清除会话的cookie 你可以通过记录ip来增强这一点,但后来考虑代理服务器(来自代理后面的所有用户将显示为来自相同的IP - 代理)。

答案 2 :(得分:0)

Thnanks的人要求回应。  我想过这个(用户登录),但我想没有它..所以我给链接地址,用户得到它,点击这个地址..如www.blabalbla.com/test/survey/32643928569832569(唯一令牌) ..并且用户可以通过调查..然后当他完成时,他无法再通过此链接进行此调查。