2012-02-21 2 views
1

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

ответ

5

Состояние сеанса (почти всегда) хранится на сервере и идентифицируется случайным числом, токеном сеанса.

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

Как можно сказать, что сеанс хранится на сервере, правильно ли это, что сеансы хранятся на сервере?

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

если да, то какова концепция Cookieless сессии

Самый простой способ сохранить маркер использует куки. Для этого были изобретены куки. Альтернативы передают файл cookie взад и вперед, используя скрытые переменные формы или как часть URL-адреса.

1

Сессия хранится на сервере. Каждый сеанс, связанный с идентификатором (самый простой поставщик состояния сеанса в ASP.NET - это просто словарь в памяти с идентификаторами в виде ключей). Этот идентификатор также сохраняется в файле cookie клиента, но в случае сеансов cookieless идентификатор хранится в URL-адресе (example).

0

Вспомните идентификатор сеанса как ключ в таблице и состояние сеанса как значение. Только ключ отправляется клиентам, а не стоимость.

В случае ASP.NET само состояние сеанса является Словарем, который содержит пары ключ/значение.

Если вы используете стандартный поставщик сеанса SQL Server, указанная выше таблица называется ASPStateTempSessions. SessionId является PK, а сериализованный Dictionary хранится в столбце SessionItemShort или SessionItemLong.