2012-06-15 33 views
5

私はDjangoの新人ですが、DjangoのWebサイトで投票を作成するチュートリアルに取り組んでいます。Djangoゲストは一度だけ投票に投票します

ゲストは(登録/ログインなしで)投票できるのは、投票に1回しかできないようにするための最良の方法は何ですか?

  • IP(ネットワークを共有している人は1度しか投票できないため、IPは不要です)。
  • Cookie(ユーザーはCookieを削除できますが、最適なアプローチのようです)。
  • セッション(ユーザーがブラウザを閉じると、セッションが変更されます)。

私はCookieが最良のアプローチだと思っていますが、Djangoの方が良い方法はありますか?

Evercookie事実irrevokableクッキーあなたに与えます:

答えて

7

使用するサーバーフレームワーク上の独立した一つの解決策があります。そのレベルのデータ永続性が必要な場合は、それらを使用します。

Evercookieクッキーと(例えば「クッキー」などHTML5ののlocalStorageフラッシュが使用するメモリのような)他の様々な場所でデータを格納するためのソリューションです。 これらの場所のいずれかがクリアされている場合は、次にサイトにアクセスすると、データが再び入力されます。あなたが必要とするのは、Evercookieで使用されている13の場所のいずれかに格納されているデータで、次の訪問は他の12の場所に再びデータを取り込みます。

このようなクッキーを取り除くのはかなり難しいので、ユーザーが実際にそのように追跡することに実際に同意しているかどうかを考慮してください。それらのうちのいくつかは確かに同意しないでしょう。

1

人々が一度だけ投票できることが重要なのであれば、とにかく基本的な登録/ログインシステムの作成を検討してください。ゲストは常に複数のコンピュータを使用して投票を斜めにすることができますが、アカウント登録では少なくとも投票に使用されている電子メールアドレスを追跡できます。また、そのように投票を歪めるためにもう少し努力が必要です。重要ではあるが重要ではない場合は、匿名のゲストにクッキーアプローチを使用します。

関連する問題