Идентификация пользователей для свойств профиля ASP.NET
Обновлен: Ноябрь 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 Sub Profile_OnMigrateAnonymous(sender As Object, args As ProfileMigrateEventArgs)
Dim anonymousProfile As ProfileCommon = 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)
End Sub
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);
}
См. также
Основные понятия
Общие сведения о свойствах профилей ASP.NET
Общие сведения о свойствах профилей ASP.NET