Как поймать пользователей, которые открывают приложение с нескольких страниц - PullRequest
4 голосов
/ 17 декабря 2010

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

Изменить, почему мне нужна такая вещь: У меня есть переменная с именем DealerID, переносимая между страницами с сеансом.Некоторые пользователи хотят, чтобы: «В то время как я делаю свои работы с DealerID на одной странице, выполняю другие работы с другим DealerID на другой странице»

Я пытался объяснить.Надеюсь, это поможет.

Ответы [ 5 ]

3 голосов
/ 17 декабря 2010

Сессия не подходит для этого варианта использования. Вам нужно, чтобы экземпляр браузера сообщал вам, что такое DealerID во время каждого запроса. Это можно сделать с помощью строки запроса, viewstate, раскрывающегося списка / поля на странице на странице и т. Д.

Обоснование: сессия связана со всеми экземплярами браузера через общий cookie, что вызывает эту проблему. Query String или ViewState или поле на странице связывают данные с конкретным экземпляром окна браузера. Используя этот метод, вы полностью устраняете проблему и используете технологию, которая была разработана.

3 голосов
/ 17 декабря 2010

Реальная вещь, на которой вам нужно сосредоточиться - это настроить приложение для поддержки нескольких вкладок / страниц.

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

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

2 голосов
/ 17 декабря 2010

Технически вы не можете узнать, кто открыл более одной страницы (HTTP не имеет соединения), если они сами не скажут вам!

Я думаю, что это вопрос исполнительной работы (как сделать это эффективно), а не лучшее техническое решение, защищенное от взлома. Итак:

Поместите небольшой элемент управления AJAX (JavaScript код) на страницу, которая работает как компонент сигнализации от клиента и говорит Blah..Blah ....

Используйте Session объекты (ASP.NET позаботится о правильном ключе / значении сеанса для вас, просто используйте его на стороне сервера), и если есть два сигнала от одного клиента, вы перехватили (!) Их как ты хочешь. Опытный пользователь может отключить этот защитный механизм, но вы можете повысить цену, применив его более сложно.

Я предлагаю не реагировать на обман немедленно. Отметьте пользователя в своей бизнес-логике и покажите счет позже. Это более эффективно, т. Е. То, что делает StackOverFlow.com :)

1 голос
/ 17 декабря 2010

Учитывая, что вы хотите посчитать количество вкладок, которые пользователь одновременно открыл с вашим приложением, проблема заключается в том, что на самом деле нет хорошего способа сделать это.Наилучшим способом сделать это, вероятно, будет запускать что-то локально, но, поскольку разные браузеры кодируются по-разному, нет хорошего способа избежать заголовков, зная, какой браузер использует пользователь, и выполнить вызов API для поискаout (если таковой имеется!).

Если вам просто нужна базовая, грубая оценка приблизительного подсчета.Вы можете попытаться установить cookie при загрузке приложения (загрузка его в новую вкладку приведет к сбросу cookie) и создать перекрестную ссылку на GUID для каждого сеанса с IP-адресом.Однако это никогда не будет достаточно точным, поскольку несколько пользователей могут использовать один и тот же IP-адрес, они могут использовать более одного браузера, время ожидания сеанса и т. Д.

1 голос
/ 17 декабря 2010

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

Я бы отправлял токен с каждым запросом и вставлял его в скрытое поле на странице. А затем подключите токен к любому постбеку с помощью JavaScript. Если токен возвращается несколько раз, у вас есть дополнительная вкладка!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...