предотвратить общий сеанс с несколькими окнами браузера - PullRequest
3 голосов
/ 03 февраля 2012

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

Большое спасибо,

Ni

Ответы [ 2 ]

3 голосов
/ 04 февраля 2012

Это по замыслу, и с этим ничего не поделаешь.Вы не можете войти на один и тот же сайт с двумя разными учетными записями одновременно, независимо от того, используете ли вы 2 окна или 2 вкладки в одном и том же окне (при условии, что у вас одинаковый тип браузера / поставщик).

Вам придетсяразработать сайт специально для поддержки управления несколькими учетными записями одновременно (это делает Google, но с ограничениями).Я вижу, что это сделано путем определения записи для ПОЛЬЗОВАТЕЛЯ и отдельных записей для СЧЕТОВ, которые принадлежат этому пользователю.Затем вы можете иметь логин пользователя и спрашивать его - для каждой страницы - какой учетной записью он хочет управлять, поддерживать это состояние - для каждой страницы - и иметь какой-то механизм переключения учетных записей (например, раскрывающийся список), чтобы они могли переключать учетные записи.Опять же, это будет для каждой страницы, включая представление состояния (или аналогичный механизм), и сеанс будет по-прежнему использоваться совместно.

Еще один способ сделать это возможным - иметь некоторый идентификатор учетной записи в URL;например,

http://mysite.com/account-1234/default.aspx
http://mysite.com/account-5678/default.aspx

Это позволит одному пользователю управлять несколькими учетными записями.Если вы хотите поддерживать отдельные имена входа, вам нужно будет авторизоваться на основе части идентификатора учетной записи в URL, и вам придется поддерживать отдельные файлы cookie для проверки подлинности (с разными именами файлов cookie, например, «auth-1243» и «auth-5678»).") - это означает, что вам нужно будет поработать на уровне авторизации.И, опять же, сеанс будет общим, поэтому вы не сможете хранить в нем данные, относящиеся только к одной учетной записи (они должны быть в коллекции «account», полученной на основе идентификатора из файла cookie).Запрашиваемый URL-адрес всегда должен совпадать с файлом cookie, или вы, вероятно, использовали бы путь cookie для создания этого ограничения.

Мне лично нравится второй вариант, и я думаю, что он выполним;только я бы, вероятно, использовал URL-адрес в URL-адресе, так как его легче запомнить (хотя и дольше), или имя пользователя (если вы управляете ими на своем сайте, поскольку они будут уникальными).+ 1

0 голосов
/ 12 февраля 2016

Интересная проблема. У меня есть приложение ASP.NET. Чтобы включить несколько сеансов в разных окнах, я использую разные коллекции, хранящиеся в переменных сеанса, помеченных номером сеанса, сгенерированным приложением, для хранения контекста каждого окна. Немного кода, но это работает.

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