Предотвращение многократной отправки анонимным пользователем формы в ASP.NET без SqlMembershipProvider

StackOverflow https://stackoverflow.com/questions/793175

Вопрос

У меня есть простая форма, которая сбрасывает выбранные ответы в XML-файл.Как запретить анонимному пользователю отправлять эту форму много раз?

Мне не нужно абсолютно надежное решение, и у меня есть ограничение: я не могу использовать базу данных и, следовательно, не имею SqlMembershipProvider.

Будет ли работать проверка файлов cookie?Как это сделать правильно?

Заранее спасибо.

Обновлять: Точнее, я имею в виду не просто случайную отправку формы, а предотвращение повторной отправки этой формы пользователем, зашедшим на сайт неделю назад.

Это было полезно?

Решение

Короче говоря, вы не можете быть полностью надежными.Если вас не беспокоит что-то пуленепробиваемое, как вы говорите, вы можете либо

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

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

ХТХ

Другие советы

Используйте переменные сеанса, чтобы отслеживать, что делает ваш пользователь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top