Продолжается ли тот же сеанс - PullRequest
2 голосов
/ 30 июня 2010

Продолжается ли тот же сеанс или это новый сеанс, созданный для того же «ПОЛЬЗОВАТЕЛЯ», когда пользователь входит в систему с компьютера «А» с помощью Firefox.

Насколько я понимаю, "сессия создана для этого пользователя сервером".

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

Что будет?

Будет ли сервер продолжать тот же сеанс, заставляя код распознавать пользователя?

Запустит ли сервер новый сеанс для этого запроса и уничтожит старый сеанс?

Рассмотрим тот же вопрос, но теперь пользователь входит в систему из другого браузера. Что будет?

Ответы [ 6 ]

4 голосов
/ 30 июня 2010

Сеансы основаны на файлах cookie, в которых хранится идентификатор сеанса. Таким образом, дело только в том, как браузер хранит свои куки.

Как правило, браузеры обмениваются файлами cookie между вкладками, поэтому с новой вкладкой идентификатор сеанса сохраняется, а новый сеанс не создается.

Однако два разных браузера не разделяют файлы cookie, поэтому в другом браузере создается новый сеанс.

Есть также сеансы без печенья. В этом случае идентификатор сеанса сохраняется в URL (например, http://www.server.com? SessionId = 12345 ). Очевидно, что в этом случае, если вы откроете новую вкладку и введете адрес без sessionId, будет также создана новая вкладка.

1 голос
/ 30 июня 2010

Сеансы не являются общими для браузеров, а только для вкладок (или окон), только если новая вкладка / окно создается с текущей страницы (если сеанс без файлов cookie не обрабатывается с помощью строки запроса).Если щелкнуть ссылку и сказать «открыть» на новой вкладке или в окне или выбрать дублирование текущей вкладки / окна, обе вкладки / окна будут использовать один и тот же сеанс.Это зависит от браузера, и каждый браузер может реализовать его по-своему.

Это очень легко проверить.Создайте простую страницу aspx с Label и ссылкой на текущую страницу.В PageLoad сделайте следующее:

if (Session["Test"] != null)
{
    Session["Test"] = (int)(Session["Test"]) + 1;
}
else
{
    Session["Test"] = 1;
}

yourLabel.Text = Session["Test"].ToString();

Затем откройте страницу разными способами.Используйте href с target=_blank.Href создаст новую вкладку / окно и поделится сессией, но загрузка страницы любым другим способом не должна.

1 голос
/ 30 июня 2010

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

0 голосов
/ 30 июня 2010

Если это новая вкладка, то будет использоваться тот же сеанс (потому что браузер предоставит тот же файл cookie сеанса).Если это другой браузер, cookie не будет присутствовать, и будет запущен новый сеанс (сеанс в другом браузере будет сохраняться, если вы используете стандартный механизм сеанса).

0 голосов
/ 30 июня 2010

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

0 голосов
/ 30 июня 2010

Сеанс пользователя обычно хранится в файле cookie, который создается веб-сервером, но фактически сохраняется на клиенте. Если две вкладки Firefox совместно используют файлы cookie, сеанс будет разделен между ними. Однако если две вкладки не разделяют файлы cookie, для каждой из них будет создан сеанс сервера.

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