限制用户在一天内执行一定次数的操作

时间:2012-12-04 05:11:37

标签: ruby-on-rails devise spam

我正在使用Rails 3.1.0和Devise 2.1.0。我想限制用户在一天内执行操作的次数。此限制的主要目的是防止垃圾邮件。

我看到很多类似于这个的问题,但是想知道是否有一种特定的方法来完成我想通过Devise做的事情。

对于创建模型实例的操作,一天中执行操作的次数很容易跟踪。但是,我想限制的至少一个动作不会创建模型实例,所以我不知道该怎么办。

我还想知道这是否是防止垃圾邮件的合法/有效方法(除了要求用户注册并登录以执行操作)。

1 个答案:

答案 0 :(得分:0)

就个人而言,我发现这些系统过于复杂。除非垃圾邮件是一个现有的,可证明的问题,否则我不确定在一个可能相当广泛的系统中添加是充分利用时间和精力。

替代方案是要求通过第三方服务(比如Facebook)进行注册,并使用captchas或令人兴奋的新negative captchas

也就是说,如果你想这样做,我认为跟踪它的最佳位置将是一个短暂的数据存储。由于你可以使用队列,Redis会非常好。在要限制的操作中,向队列添加时间戳,在允许用户执行所述操作之前,检查队列中的元素数,清除那些过时的元素。

那是伪代码,但至少应该帮助你开始。