Ограничьте клиент для посещения веб-сайта с 1 вкладкой и 1 браузером?

Мне это - несколько философское проектное решение.

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

Некоторые другие подходы являются init () метод, который идет с некоторыми собственными проблемами. Один из которых удостоверяется, init () на самом деле называют.

вариант А использует ленивый подход для автоматического вызова init () первым разом, когда средство доступа/мутатор называют, но это требует, чтобы любая потенциальная вызывающая сторона должна была волноваться об объекте, являющемся допустимым. (В противоположность "это существует, следовательно это - допустимая философия").

я видел различные предложенные шаблоны разработки, чтобы заниматься этой проблемой также. Такой как способность создать начальный объект через ctor, но имеющий необходимость назвать init () для доставления содержавший, инициализированный объект с accesors/mutators.

Каждый подход имеет свои взлеты и падения; я использовал все их успешно. Если Вы не делаете готовые к использованию объекты с момента, они создаются, то я рекомендую, чтобы большая доза утверждала или исключения, чтобы удостовериться, что пользователи не взаимодействуют прежде init ().

Приложение

я записал из перспективы программистов на C++. Я также предполагаю, что Вы правильно используете идиому RAII для обработки средств, высвобожденных, когда исключения выдаются.

5
задан webdever 4 December 2009 в 08:24
поделиться

4 ответа

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

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

Таким образом, только последняя сгенерированная версия страницы будет иметь возможность взаимодействовать с сервером, и если пользователь откроет несколько версий будет работать только самая последняя страница.

Этот метод должен работать, даже если пользователь открывает дополнительные браузеры на других машинах. Он не использует IP-адреса для установления личности. И нет никаких шансов, что пользователь каким-то образом будет заблокирован

7
ответ дан 14 December 2019 в 04:40
поделиться

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

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

Я не знаю, какой еще блокируемый ресурс вы можете легко использовать.

0
ответ дан 14 December 2019 в 04:40
поделиться

На ум приходят несколько вариантов ...

  1. Когда они впервые открывают сайт, вам нужно сохранить текущее состояние пользователя в файле cookie или аналогичном файле, который вы должны проверить за каждый раз, когда вы открываете сайт. Если состояние Активно, это означает, что у них открыто другое окно. Проблема в том, чтобы гарантировать, что состояние очищается, когда они покидают исходное окно сайта - вам нужно будет прослушать событие window.onunload и очистить состояние в этот момент - но вы не можете 100 % гарантия, что это произойдет.
  2. В противном случае вы можете разместить на сайте скрипт, который проверяет серверный скрипт каждые n секунд, уведомляя сервер об открытии окна для этого клиента и предотвращая появление новых окон открываются до тех пор, пока не пропадет пинг.
  3. Чтобы усложнить задачу, вы можете поддерживать постоянное соединение между сервером и клиентом (через сокеты или подобное), что будет учитывать то же самое. Меньше звонков от клиента, немного сложнее настроить. См. http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm для получения базовой информации о сокетах flash +.
  4. Если вы работаете с Flash, вы можете изучить Local Shared Objects (flash cookie) для хранения состояния. По-прежнему возможно пропустить событие выгрузки, но, по крайней мере, cookie сохраняется во всех сеансах браузера и во всех типах браузеров.

Вариант 3 - лучший вариант IMHO.

htm для получения базовой информации о сокетах flash +.
  • Если вы работаете с Flash, вы можете просмотреть локальные общие объекты (flash cookie), чтобы сохранить состояние. По-прежнему возможно пропустить событие выгрузки, но, по крайней мере, cookie сохраняется во всех сеансах браузера и типах браузеров.
  • Вариант 3 - лучший вариант IMHO.

    htm для получения базовой информации о сокетах flash +.
  • Если вы работаете с Flash, вы можете просмотреть локальные общие объекты (flash cookie), чтобы сохранить состояние. По-прежнему возможно пропустить событие выгрузки, но, по крайней мере, cookie сохраняется во всех сеансах браузера и типах браузеров.
  • Вариант 3 - лучший вариант IMHO.

    0
    ответ дан 14 December 2019 в 04:40
    поделиться

    Решение:

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

    -1
    ответ дан 14 December 2019 в 04:40
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: