0

Rails 3.1.0 と Devise 2.1.0 を使用しています。ユーザーが 1 日にアクションを実行できる回数を制限したいと考えています。この制限の主な目的は、スパムを防止することです。

これに似た質問がたくさんありますが、Devise を通じて私がやろうとしていることを達成する具体的な方法があるかどうか疑問に思っていました。

モデル インスタンスを作成するアクションについては、アクションが 1 日に実行された回数を簡単に追跡できます。ただし、制限したいアクションの少なくとも 1 つがモデル インスタンスを作成しないため、どうすればよいかわかりません。

また、これがスパムを防止するための合法的/効果的な方法であるかどうかも疑問に思っていました (アクションを実行するためにユーザーに登録とサインインを要求することに加えて)。

4

1 に答える 1

0

個人的には、この種のシステムは複雑すぎると思います。スパムが既存の証明可能な問題でない限り、かなり大規模になりそうなシステムを追加することが、時間とエネルギーの有効な使い方であるかどうかはわかりません。

これに代わる方法は、サードパーティ サービス (Facebook など) を通じて登録を要求し、キャプチャまたは刺激的で新しいネガティブ キャプチャを使用することです。

とはいえ、これを行いたい場合、それを追跡するのに最適な場所は一時的なデータ ストアにあると思います。キューを使用できるので、Redis はこれに非常に適しています。制限するアクションでは、キューにタイムスタンプを追加し、ユーザーがそのアクションを実行できるようにする前に、キュー内の要素の数を確認し、古い要素を削除します。

これは一種の疑似コードですが、少なくとも始めるのに役立つはずです。

于 2012-12-04T05:25:03.110 に答える