2014-10-30 2 views
0

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

+3

Вы понимаете, что легко заставить другие IP-адреса обманывать такую ​​схему, и что в зависимости от сети многие действительные пользователи могут иметь один и тот же IP-адрес. Вместо использования IP-адресов подумайте об использовании адресов электронной почты. может генерировать кучу адресов электронной почты, но если вы отправите подтверждение каждому, что t эй, нужно отвечать только за то, чтобы проголосовать, спутник в конечном итоге устал от игры. –

+0

@theTinMan Подождите, как кто-то может обмануть эту систему? –

+2

Есть много способов, в том числе отключение их маршрутизатора/сетевого модема, пока он не получит новый IP-адрес, используя различные «луковые» маршрутизаторы .... Найдите «получить поддельный IP-адрес» и «луковые маршрутизаторы» для идеи. –

ответ

2

Просто используйте request.remote_ip из в пределах вашего контроллера action.

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

+0

Так будет ли этот код работать? def vote/ request.remote_ip/ @ip = remote_ip/ end –

+0

+1 для указания проблемы с пулом NAT. –

1

Да, это так. Вы можете получить доступ к IP-адресу через request.remote_ip и добавить чек, чтобы разрешить голосование только в том случае, если IP еще не был проголосован.

Через JavaScript? No.

0

Вы можете получить доступ к IP-адрес пользователя по

request.remote_ip 

Вы можете также печенье, чтобы обработать случай для пользователей, которые меняют свой IP (не так просто, как это, это просто пример:

cookies["voted"] = true 
+1

Конечно, кто-то, желающий обмануть систему, просто очистит их файлы cookie или использует частный режим, чтобы очистить его автоматически. –

Смежные вопросы