Как IIS распознает разные сессии в .NET? - PullRequest
9 голосов
/ 19 августа 2010

Предположим, я вошел в приложение, которое работает с IIS .Сейчас я не вышел из системы, но закрыл браузер.И когда я снова получаю доступ к приложению, по умолчанию оно отображается на странице входа.Как IIS распознает, что это новый запрос, и перенаправляет пользователя на страницу входа?

У меня есть еще один вопрос.Предположим, если я не закрываю браузер, который я использовал при входе в систему. Я открываю новый браузер, чтобы запросить страницу из того же приложения.IIS распознает, что это новый запрос к приложению, и перенаправляет пользователя на страницу входа.Почему он не использует существующий сеанс или файлы cookie, которые использует первый браузер?

Пожалуйста, не раздражайтесь от моих постоянных вопросов ... У меня огромное замешательство.Мы говорим HTTP - протокол без сохранения состояния.Как только страница запрошена, я вошел в систему. И соединение протокола HTTP будет разорвано между IIS и браузером, верно?Затем я перехожу на другие страницы в этом приложении.Теперь IIS распознает, что пользователь вошел в этот браузер.Но когда я открываю новый браузер и запрашиваю это приложение, как IIS распознает, что это новый запрос?Поскольку протокол HTTP отключен, как он работает в первом случае?

Ответы [ 3 ]

37 голосов
/ 19 августа 2010

Как вы правильно сказали, HTTP сам по себе не имеет состояния, и каждый запрос технически отделен от любого другого. Сессии, используемые веб-сайтами, являются обходным путем для этого. Обычно происходит то, что сервер сохраняет любую информацию, которую он хочет сохранить между запросами (например, имя пользователя и / или идентификатор вошедшего в систему пользователя), и назначает этой информации идентификатор (называемый «идентификатором сеанса»). Затем он сообщает браузеру идентификатор сеанса таким образом, чтобы браузер мог вернуть идентификатор, когда пришло время сделать другой запрос. Если браузер играет свою роль и предоставляет идентификатор сеанса, сохраненную информацию можно извлекать, обновлять и т. Д. С каждым запросом, обеспечивая некоторую степень состояния даже по протоколу без сохранения состояния.

Сеансы обычно реализуются с использованием файлов cookie. Таким образом, сервер передает браузеру файл cookie с идентификатором сеанса, а браузер возвращает этот же файл cookie при каждом запросе до тех пор, пока не истечет срок действия файла cookie или он не будет забыт иным образом. Некоторые файлы cookie (так называемые «сеансовые файлы cookie») не сохраняются и забываются при закрытии браузера. В недавно открытом браузере нет файлов cookie сеанса для передачи, поэтому, если сервер использует файлы cookie сеанса для выполнения сеансов (что и должно быть), он будет считать пользователя, еще не вошедшего в систему, и перенаправит его на страницу входа, если ему потребуется войти в систему.

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

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

1 голос
/ 19 августа 2010

Проверьте следующие статьи.Они могут быть полезны.

1 голос
/ 19 августа 2010

Есть куки, которые передаются всегда, независимо от того, вошли вы в систему или нет.Они отображаются на сеанс в IIS.

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