Программные стратегии для разрешения анонимного / неаутентифицированного голосования на веб-сайтах - PullRequest
5 голосов
/ 14 марта 2011

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

Есть 3 основных сценария Я хочу поддержать.

1) Аутентифицированный пользователь "Joe Blow" входит на мой сайт и голосует. Поскольку он аутентифицирован, он может проголосовать только один раз. За каждый голос, который он делает, я сохраняю его UserId в БД

2) Неаутентифицированный пользователь "Салли" заходит на мой сайт и голосует. Поскольку она не прошла проверку подлинности, я сохраню ее голос под учетной записью пользователя «Anonymous-Users-From-My-Site».

3) Неаутентифицированный пользователь "Золтан" использует созданный мной виджет, чтобы попасть на мой сайт с какого-либо другого партнерского сайта, на котором размещен мой виджет. Он также может голосовать с этого сайта. Я сохраню его голос в учетной записи партнера-партнера, которая называется "Anonymous-Users-From-A-Partner-Site".

Суть в том, что мне нужно поддержать способность "Салли" и "Золтана" голосовать за неограниченное количество вещей. Возможно, Салли хочет проголосовать за 500 вещей за один день. Возможно, Золтан хочет проголосовать за 200 вещей на сайте партнера. Возможно, Салли не посещает сайт в течение месяца, а затем возвращается, чтобы проголосовать за другие материалы.

Как мне добиться сценариев 2 и 3 с помощью cookie? Могу ли я хэшировать все идентификаторы предметов для голосов вместе? Какие у меня варианты?

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

И наконец: я не заинтересован в использовании чего-то вроде EverCookie. Для моих нужд это полное излишество.

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Лично я не стал бы смешивать какие-либо неаутентифицированные записи с ОДНОМ пользователем ... вместо этого у меня была бы таблица неаутентифицированных ответов.Первый раз, когда человек голосует - вы вставляете в эту таблицу и сохраняете автоключ (ID) в своем cookie.Если он удалит свои куки ... кого это волнует.Но это должно решить все ваши потребности.

Таким образом, вы не пытаетесь «подделать» логику, анализируя разделенные запятыми «голоса» ... а вы просто притворяетесь, что ониобычный пользователь и нажмите на вашу БД, чтобы получить свои голоса.

1 голос
/ 14 марта 2011

Сделайте что-то похожее на то, что делает SO. Когда пользователь заходит на ваш сайт, присвойте ему уникальный идентификатор и сохраните этот идентификатор в постоянном файле cookie. Если человек когда-либо полностью регистрируется, вы можете связать этот сгенерированный идентификатор с именем учетной записи. Тогда действительно не имеет значения, как пользователь попадает на ваш сайт, так как браузер автоматически предоставит вам правильный файл cookie.

Я бы не стал сериализовывать данные в куки, поскольку объем данных со временем может стать довольно большим, и вы, возможно, все равно захотите отслеживать голоса на стороне сервера (так что вы можете отслеживать использование / злоупотребление).

...