Сессии без файлов cookie в asp.net - PullRequest
1 голос
/ 21 февраля 2012

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

Ответы [ 3 ]

5 голосов
/ 21 февраля 2012

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

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

как можно сказать, что сеанс хранится на сервере, верно?что сессии хранятся на сервере?

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

если да, то какова концепция сеанса без файлов cookie

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

1 голос
/ 21 февраля 2012

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

0 голосов
/ 21 февраля 2012

Думайте об идентификаторе сеанса как о ключе в таблице, а о состоянии сеанса - как о значении.Клиентам отправляется только ключ, а не значение.

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

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

...