Identification de l'utilisateur avec les propriétés de profil ASP.NET

Mise à jour : novembre 2007

La fonctionnalité de profil utilisateur ASP.NET est conçue pour fournir des informations spécifiques à l'utilisateur actuel. Les profils peuvent fonctionner avec des utilisateurs authentifiés ou des utilisateurs anonymes (non authentifiés).

Utilisateurs authentifiés

Par défaut, un profil utilisateur est associé à l'identité de l'utilisateur stockée dans la propriété User du contexte HTTP actuel, accessible via la propriété HttpContext.Current. L'identité de l'utilisateur est déterminée par :

  • le système d'authentification par formulaire ASP.NET, qui définit l'identité de l'utilisateur après une authentification réussie ;

  • l'authentification Windows ou Passport, qui définit l'identité de l'utilisateur après une authentification réussie ;

  • l'authentification personnalisée, qui permet de gérer l'obtention des informations d'identification utilisateur et de définir l'identité de l'utilisateur manuellement.

L'authentification par formulaire ASP.NET implique de créer un formulaire de connexion et de demander à l'utilisateur d'indiquer ses informations d'identification. Vous pouvez utiliser les contrôles de connexion ASP.NET pour créer le formulaire de connexion et effectuer l'authentification par formulaire sans écrire de code. Pour plus d'informations sur l'utilisation des fonctionnalités ASP.NET pour authentifier les utilisateurs, consultez Vue d'ensemble des contrôles de connexion ASP.NET et Gestion des utilisateurs à l'aide de l'appartenance. Pour plus d'informations sur l'authentification par formulaire, consultez Comment : implémenter une simple authentification par formulaire.

Utilisateurs anonymes

Les profils peuvent également fonctionner avec des utilisateurs anonymes. La prise en charge des profils anonymes n'étant pas activée par défaut, vous devez l'activer explicitement. De plus, lorsque vous définissez des propriétés de profil dans le fichier Web.config, vous devez les rendre explicitement accessibles pour les utilisateurs anonymes individuellement. Les propriétés de profil ne prennent pas en charge l'accès anonyme par défaut. En effet, les profils peuvent être conçus pour fonctionner avec des utilisateurs authentifiés et il est probable qu'un grand nombre de propriétés se rapportent à des informations personnelles, non disponibles pour les utilisateurs anonymes.

Si l'identification anonyme est activée, ASP.NET crée une identification unique pour les utilisateurs la première fois qu'ils visitent votre site. L'identification utilisateur unique est stockée dans un cookie sur l'ordinateur de l'utilisateur afin que ce dernier puisse être identifié à chaque demande de page. L'expiration par défaut du cookie est définie à environ 70 jours et est renouvelée périodiquement lorsqu'un utilisateur visite le site. Si l'ordinateur de l'utilisateur n'accepte pas les cookies, son identification peut être gérée dans le cadre de l'URL de la demande de page, bien qu'elle soit perdue dès que l'utilisateur ferme le navigateur.

Pour plus d'informations sur l'activation de l'identification anonyme, consultez anonymousIdentification, élément (Schéma des paramètres ASP.NET).

Migration des informations de profil anonymes

Dans certains cas, votre application peut initialement gérer les informations de personnalisation d'un utilisateur anonyme, puis l'utilisateur se connecte en définitive à votre application. L'identité de l'utilisateur passe alors d'une identité d'utilisateur anonyme assignée à l'identité fournie par le processus d'authentification.

Lorsque l'utilisateur se connecte, (autrement dit, lorsqu'il cesse d'être un utilisateur anonyme), l'événement MigrateAnonymous est déclenché. Vous pouvez gérer cet événement pour effectuer, si nécessaire, une migration des informations de l'identité anonyme de l'utilisateur vers la nouvelle identité authentifiée. L'exemple de code suivant montre comment effectuer une migration des informations lorsqu'un utilisateur est authentifié.

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);

}

Voir aussi

Concepts

Vue d'ensemble des propriétés du profil ASP.NET

Vue d'ensemble des propriétés du profil ASP.NET

Définition des propriétés de profil ASP.NET

Fournisseurs de profils ASP.NET