Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我将 Rails 3.1.0 与 Devise 2.1.0 一起使用。我想限制用户在一天内执行某项操作的次数。此限制的主要目的是防止垃圾邮件。
我看到许多与此类似的问题,但想知道是否有一种特定的方法可以通过 Devise 完成我想要做的事情。
对于创建模型实例的操作,一天内执行操作的次数很容易跟踪。但是,我想限制的至少一项操作不会创建模型实例,因此我不确定该怎么做。
我还想知道这是否是防止垃圾邮件的合法/有效方式(除了要求用户注册并登录以执行操作)。
就个人而言,我发现这类系统过于复杂。除非垃圾邮件是一个现有的、可证明的问题,否则我不确定添加一个可能相当广泛的系统是否会很好地利用时间和精力。
替代方法是要求通过第三方服务(例如 Facebook)进行注册,并使用验证码或令人兴奋的新否定验证码。
也就是说,如果你想这样做,我认为跟踪它的最佳位置是在临时数据存储中。Redis 非常适合这个,因为你可以使用队列。在您要限制的操作中,将时间戳添加到队列中,然后在您允许用户执行所述操作之前,检查队列中的元素数量,在您这样做时清除那些太旧的元素。
那是一种伪代码,但至少应该可以帮助您入门。