Идентификация пользователей для свойств профиля ASP.NET

Visual Studio 2010

Обновлен: Ноябрь 2007

Функция профиля пользователя ASP.NET предназначена для предоставления уникальной информации о пользователе. Профили могут работать либо с прошедшими проверку, либо с анонимными (не прошедшими проверку подлинности) пользователями.

По умолчанию профиль пользователя связан с удостоверением пользователя, хранящимся в свойстве User текущего HTTP-контекста, доступ к которому обеспечивается через свойство HttpContext.Current. Удостоверение пользователя определяется следующим образом:

  • Система проверки подлинности в формах ASP.NET, определяющая удостоверение пользователя после прохождения проверки подлинности.

  • Проверка подлинности Windows или Passport, определяющая удостоверение пользователя после прохождения проверки подлинности.

  • Пользовательская проверка подлинности, в рамках которой вручную осуществляется управление получением учетных данных и определение удостоверения пользователя.

Проверки подлинности в формах ASP.NET предусматривает создание формы входа и запроса учетных данных пользователей. Элементы управления входом ASP.NET можно использовать для создания формы входа и выполнения проверки подлинности в формах без разработки кода. Дополнительные сведения об использовании возможностей ASP.NET для проверки подлинности пользователей см. в разделах Общие сведения об элементах управления входом ASP.NET и Управление пользователями путем объединения их в группы. Дополнительные сведения о проверке подлинности в формах см. в разделе Практическое руководство. Реализация простой проверки подлинности с помощью форм.

Профили также могут работать и с анонимными пользователями. Поддержка анонимных профилей по умолчанию отключена, поэтому ее необходимо включить. Кроме того, при определении свойств профиля в файле Web.config необходимо явно сделать их доступными для отдельных анонимных пользователей. Свойства профилей не поддерживают анонимный доступ по умолчанию, поскольку профили могут быть созданы для работы только с пользователями, прошедшими проверку подлинности. Также многие свойства могут сохранять личную информацию, не доступную для анонимных пользователей.

Если включена возможность анонимной идентификации, ASP.NET создает уникальную идентификацию для пользователей с момента их первого посещения узла. Уникальная идентификация пользователя хранится в файле Cookie на компьютере пользователя с тем, чтобы пользователя можно было распознать при каждом запросе страницы. Срок действия файла Cookie по умолчанию составляет примерно 70 дней и обновляется при посещении пользователем веб-узла. Если компьютер пользователя не принимает файла Cookie, идентификация пользователя может выполняться на основе части URL-адреса запроса страницы. Но в этом случае данные идентификации будут утеряны после закрытия обозревателя.

Дополнительные сведения о подключении анонимной идентификации см. в разделе Элемент anonymousIdentification (схема параметров ASP.NET).

В некоторых случаях приложение может исходно поддерживать информацию персонализации для анонимного пользователя, который случайно входит в приложение. В этом случае вместо анонимного удостоверения пользователю присваивается удостоверение, предоставляемое в рамках процесса проверки подлинности.

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

public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
  ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);

  Profile.ZipCode = anonymousProfile.ZipCode;
  Profile.CityAndState = anonymousProfile.CityAndState;
  Profile.StockSymbols = anonymousProfile.StockSymbols;

  ////////
  // Delete the anonymous profile. If the anonymous ID is not 
  // needed in the rest of the site, remove the anonymous cookie.

  ProfileManager.DeleteProfile(args.AnonymousID);
  AnonymousIdentificationModule.ClearAnonymousIdentifier(); 

  // Delete the user row that was created for the anonymous user.
  Membership.DeleteUser(args.AnonymousID, true);

}


Показ: