Как я должен обрабатывать ввод анонимного пользователя? - PullRequest
1 голос
/ 13 августа 2011

Я бы хотел, чтобы пользователи моего веб-приложения не регистрировали учетную запись пользователя, чтобы проголосовать.Я видел сайты, где я мог свободно голосовать за или против того, что я хочу, без необходимости регистрироваться.Как это обрабатывается?Как я могу запретить одному и тому же человеку голосовать бесконечное количество раз?

Я использую Python и Django.Я думаю о реализации входа в Facebook, но я хотел бы услышать некоторые комментарии экспертов.Я отмечу наиболее полезный ответ как правильный.

Ответы [ 2 ]

2 голосов
/ 13 августа 2011

Не полагайтесь на вход в Facebook, поскольку пользователи без Facebook не смогут голосовать.

Поскольку нет реального способа быть уверенным, что незарегистрированный пользователь не будет голосовать дважды (он может подключиться самс другого компьютера или любого другого), вы должны сами определить, какие критерии вы хотите использовать для проверки его личности.

У вас есть разные способы решения вашей проблемы, все они полагаются на хранение информации оПользователь, который проголосовал.Вы можете полагаться на IP-адрес или хранить информацию в сеансе или в файлах cookie, чтобы узнать, проголосовали ли уже ваши пользователи.

1 голос
/ 13 августа 2011

Я бы создал переменную сеанса, которая сообщит мне, проголосовали ли они или нет. Правда, пользователь может очистить свои куки и проголосовать дважды, но это крайний случай. Если вы позволяете им голосовать без регистрации, я полагаю, что опрос не слишком научный.

На своем веб-сайте Django есть несколько хороших примеров использования сессий.

https://docs.djangoproject.com/en/dev/topics/http/sessions/#examples

Это, в частности, должно быть полезно для вас. Вместо голосов они имеют дело с комментариями:

def post_comment(request, new_comment):
    if request.session.get('has_commented', False):
        return HttpResponse("You've already commented.")
    c = comments.Comment(comment=new_comment)
    c.save()
    request.session['has_commented'] = True
    return HttpResponse('Thanks for your comment!')
...