Сессии в ASP.NET Core
Сессия -- это ряд последовательных запросов, которые совершаются в одном веб-браузере в течение определенного времени. Сессия может применяться в целях сохранения, к примеру, временных данных, доступность которых надо обеспечить на время работы пользователя с приложением, однако постоянного хранения такие данные не требуют.
Чтобы хранить состояние сессии, на сервере создается словарь либо хэш-таблица, хранимая в кэше и существующая для всех запросов, поступающих из одного веб-браузера в течение определенного отрезка времени. При этом на клиенте идентификатор сессии хранится в куках. Вышеупомянутый идентификатор каждый раз посылается на сервер с каждым запросом. В свою очередь, сервер использует идентификатор в целях извлечения необходимых данных из сессии. Эти куки удаляются лишь при завершении сессии. Однако в том случае, если сервер получает куки, установленные уже для истекшей сессии, для таких кук создается новая сессия.
Сервер сохраняет данные сессии в течение ограниченного отрезка времени после последнего запроса. Дефолтный промежуток равняется 20-ти минутам, однако это значение можно менять.
Также важно учитывать, что сессии являются специфическими для одного веб-браузера. Можно сказать, что для каждого веб-браузера на одном ПК будет формироваться свой набор данных.
Как это работает на практике
Для использования сессий необходимо сконфигурировать параметры сессий в классе Startup. Все существующие сессии функционируют поверх объекта IDistributedCache, а ASP.NET Core предоставляет встроенную реализацию, которую тоже можно использовать -- IDistributedCache. Для этого меняем класс Startup:
Что касается метода
Идем дальше. В методе под названием
Если же мы вдруг не будем применять
После вызова
В результате после первого запроса у нас появится возможность, используя инструменты разработчика из веб-браузера, найти куку .AspNetCore.Session, которая и будет представлять идентификатор нашей сессии:
По материалам https://metanit.com/sharp/aspnet5/.