Fornecendo uma característica apenas uma vez para cada visitante único
Pergunta
Eu escrevi um quadro de mensagens como o meu primeiro projeto ASP.NET. Parece que funciona bem até agora. No entanto, uma das características que eu tenho é que cada mensagem tem uma classificação de spam. É simplesmente o número de vezes que os telespectadores têm marcado a mensagem como spam, dividido pelo número total de vezes que a mensagem foi visto. A idéia é permitir que os usuários a ignorar mensagens com altos índices de spam, se optar por fazê-lo.
No entanto, todo o sistema pode ser frustrado por um spammer simplesmente vendo sua própria mensagem e refrescante que um monte de vezes, o que irá aumentar o número de vezes que a mensagem foi visto. Ele também pode ser frustrado por alguém que marca a mensagem como spam um monte de vezes em uma fileira. Eu preciso de uma maneira de determinar se um visitante particular, já visualizar uma mensagem particular, e uma maneira de determinar se um determinado usuário já marcou uma determinada mensagem como spam.
Eu não quero exigir o registro - Eu quero que ninguém será capaz de ver ou postar mensagens. Duas idéias que eu estive pensando em se definir um cookie quando o visitante chega para o site para que eu possa acompanhá-los, ou criar uma nova tabela de dados que os logs endereços IP de usuários quando eles vêem uma mensagem ou marcá-lo como spam. ninguém pode pensar em uma maneira melhor? Does .NET têm qualquer construído em características que poderia me ajudar a determinar se o visitante está vendo uma página pela primeira vez?
Solução
A medida mais confiável é o endereço IP de filtragem como o spammer poderia contornar qualquer outro método por escrever seu próprio programa para solicitar a página. Ele irá afectar os seus clientes por trás NAT, mas por spam fins de filtragem, ele funciona muito OK.
Outras dicas
ASP.Net tem um built-in recurso chamado Personalization
que pode ser usado para detectar e lembrar usuários anônimos ao lado normal "registado" usuários.
Para usuários anônimos usar o IP. Isto vai dar falsos positivos, especialmente para alguns provedores de internet, mas parece que um trade-off decente para o seu cenário. Também gostaria de torná-lo simples para os usuários a se identificar, id aberto é uma ótima maneira de fazer isso.