Создает ли FormsAuthentication.SetAuthCookie() файл cookie на основе сеанса?

Хорошо. Я довольно смущен, делает ли FormsAuthentication.SetAuthCookie() в asp.net создание cookie на основе сеанса или нет? Из того, что я собираюсь положить что-то в сеанс, вы сделаете что-то подобное в коде:

Session["userAge"] = 25;

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

Ответ 1

Это обычная путаница. Session и FormsAuthentication - это две отдельные концепции: у них есть независимые тайм-ауты и независимые файлы cookie (или нет файлов cookie, если вы используете Cookieless-сессии).

Сессия на сервере идентифицируется уникальным файлом cookie, который создается даже для анонимных пользователей. Этот файл cookie содержит SessionID, который не имеет ничего общего с FormsAuthentication.

Файл cookie FormsAuthentication содержит ряд вещей, наиболее важным из которых является билет аутентификации. Этот билет является зашифрованным битом информации, которая идентифицирует пользователя от введенных учетных данных. Существует большая пошаговая блок-схема и объяснение того, что в билете в этой статье MSDN.

Ответ 2

Я не уверен, что именно вы спрашиваете, но если ваш вопрос заключается в том, как вы можете получить доступ к Session["userAge"] без файла cookie, так как это отдельный объект из сеанса.

Файл cookie auth (имя по умолчанию .ASPXAUTH) создается до начала сеанса, поэтому он не может быть основан на сеансе.