Требуется ли сеанс проверки подлинности .Net Forms? - PullRequest
6 голосов
/ 03 января 2011

Мы обсуждаем, как на самом деле работает аутентификация с помощью форм.

Сохраняется ли в файле cookie вся информация, которая идентифицирует пользователя как входящего в систему, или некоторая информация сохраняется в сеансе?

Ответы [ 2 ]

12 голосов
/ 03 января 2011

Информация об аутентифицируемом пользователе сохраняется в файле cookie FormsAuthenticationTicket, по умолчанию с именем .ASPXAUTH .

Информация о сеансе пользователяотдельно от информации об аутентификации.Идентификатор сеанса может быть сохранен в файле cookie (отличном от файла cookie аутентификации) или, как указал Henk , в сеансе без файла cookie, т.е. как часть URL.

Проблема с хранением некоторой информации об аутентификации в сеансе пользователя состоит в том, что сеанс недоступен до некоторого времени после события аутентификации (через 5 событий IIRC) в конвейере обработки, в PostAcquireRequestState.Это означает, что у вас не будет доступа к данным аутентификации в сеансе до окончания аутентификации!

Можно хранить данные в сеансе и перезаписывать IIdentity и IPrincipal этими данными, но это означает, что у идентификатора пользователя будут некоторые данные для событий до того, как сеанс станет доступен, и другие данныедля событий после сеанса доступны, что может быть или не быть проблемой.Кроме того, вы, вероятно, захотите каким-то образом криптографически защитить эти данные в сеансе.

Чтобы ответить на вопрос о названии, аутентификация с помощью форм не требует сеанса;это разные объекты, необходимые для разных целей.

5 голосов
/ 03 января 2011

Чтобы узнать, как работает Аутентификация с помощью форм, вы можете проверить следующие ссылки:

Проверка подлинности с помощью форм работает в сценариях веб-фермы, где сервер, обрабатывающий запрос от пользователя, прошедшего проверку подлинностью с помощью форм, может отличаться от сервера, который фактически аутентифицировал пользователя и выдалбилет проверки подлинности с помощью форм и cookie, если не настроена проверка подлинности с помощью форм без cookie.Чтобы сделать это, в соответствии с разделом «Сценарий веб-фермы» первой ссылки:

Для решения этой проблемы значения validationKey и decryptionKey должны быть идентичны на всех компьютерах в веб-ферме.Дополнительные сведения о настройке элемента machineKey см. В разделе Практическое руководство. Настройка MachineKey в ASP.NET 2.0.

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

У меня также был пример приложения для проверки подлинности с помощью форм, и я хотел быстро это доказать.После проверки подлинности с помощью проверки подлинности с помощью форм и перехода на домашнюю страницу я перезапустил пул приложений, в котором выполнялся образец приложения, в котором должен завершаться сеанс пользователя.Затем я нажал на одну из ссылок, требующих аутентификации на домашней странице, и смог перейти по этой ссылке без перенаправления на страницу входа.

...