Информация об аутентифицированном пользователе хранится в FormsAuthenticationTicket
в файле cookie по умолчанию .ASPXAUTH.
Информация о сеансе пользователя не относится к информации об аутентификации. Идентификатор сеанса может быть сохранен в файле cookie (другой файл cookie из файла cookie аутентификации) или, как указывал Henk, в сеансе cookieless, то есть как часть URL-адреса.
Проблема с хранением некоторой информации об аутентификации в сеансе пользователя заключается в том, что сеанс недоступен до истечения некоторого времени после события аутентификации (5 событий позже IIRC) в конвейере обработки в PostAcquireRequestState
. Это означает, что у вас не будет доступа к данным аутентификации в сеансе до завершения проверки подлинности!
Можно хранить данные в сеансе и перезаписывать IIdentity
и IPrincipal
с этими данными, но это означает, что идентификатор пользователя будет иметь некоторые данные для событий до того, как будет доступен сеанс, а разные данные для событий после сеанса доступный, который может быть или не быть проблемой. Кроме того, вы, вероятно, захотите криптографически защитить эти данные в сеансе каким-то образом.
Чтобы ответить на ваш вопрос с заголовком, проверка подлинности форм не требует сеанса; они представляют собой различные объекты, требуемые для разных целей.
+1 Благодарим за доказательство концепции –