Implémentation d'un fournisseur de profils

Mise à jour : novembre 2007

La fonctionnalité de profil ASP.NET vous permet d'utiliser facilement différents fournisseurs. Vous pouvez utiliser la classe SqlProfileProvider comprise avec le .NET Framework ou implémenter votre propre fournisseur.

Vous devez créer un fournisseur de profils personnalisé lorsque :

  • Vous devez stocker des informations de profil dans une source de données, par exemple dans une base de données FoxPro ou Oracle, lesquelles ne sont pas prises en charge par les fournisseurs de profils compris dans le .NET Framework.

  • Vous devez gérer des informations de profil à l'aide d'un schéma de base de données différent de celui qui est utilisé par les fournisseurs inclus avec le .NET Framework. C'est souvent le cas, par exemple, si vous souhaitez intégrer des informations de profil aux données utilisateur dans une base de données SQL Server existante.

Classes requises

Pour implémenter un fournisseur de profils, vous devez créer une classe qui hérite de la classe abstraite System.Web.Profile.ProfileProvider. La classe abstraite ProfileProvider hérite à son tour de la classe abstraite System.Configuration.SettingsProvider, qui hérite de la classe abstraite System.Configuration.Provider.ProviderBase. Cette chaîne d'héritage vous oblige à implémenter, outre les membres de la classe ProfileProvider requis, les membres requis des classes SettingsProvider et ProviderBase.

Cette rubrique décrit les propriétés et les méthodes requises que vous devez implémenter à partir des classes abstraites ProviderBase, SettingsProvider et ProfileProvider. Pour revoir une implémentation de chaque membre, consultez Comment : créer et exécuter l'exemple de fournisseur de profils.

Membres ProviderBase

Membre

Description

Méthode Initialize

Prend en entrée le nom de l'instance du fournisseur et une NameValueCollection de paramètres de configuration. Permet de définir des options et des valeurs de propriété pour l'instance du fournisseur, notamment les valeurs et les options spécifiques à l'implémentation indiquées dans le fichier Machine.config ou Web.config.

Membres SettingsProvider

Membre

Description

Propriété ApplicationName

Le nom d'application, stocké avec chaque profil. Le fournisseur de profils utilise le nom d'application pour stocker séparément les informations de profil de chaque application. Cela permet à plusieurs applications ASP.NET d'utiliser sans conflit la même source de données si le même nom d'utilisateur est créé dans différentes applications. Plusieurs applications ASP.NET peuvent également utiliser la même source de données de profil en spécifiant le même nom d'application.

Méthode GetPropertyValues

Prend comme entrée un objet SettingsContext et SettingsPropertyCollection.

SettingsContext fournit des informations sur l'utilisateur. Vous pouvez utiliser ces informations comme clé primaire pour récupérer des informations de propriété de profil sur l'utilisateur. Utilisez l'objet SettingsContext pour obtenir le nom d'utilisateur et pour savoir si l'utilisateur est authentifié ou anonyme.

SettingsPropertyCollection contient une collection d'objets SettingsProperty. Chaque objet SettingsProperty fournit le nom et le type de la propriété, ainsi que des informations supplémentaires, comme la valeur par défaut de la propriété et si elle est ou non en lecture seule. La méthode GetPropertyValues remplit SettingsPropertyValueCollection avec les objets SettingsPropertyValue établis d'après les objets SettingsProperty utilisés comme entrée. Les valeurs de la source de données sur l'utilisateur spécifié sont assignées aux propriétés PropertyValue de chaque objet SettingsPropertyValue et la collection entière est retournée.

Appeler la méthode met également à jour la valeur LastActivityDate du profil utilisateur spécifié à la date et l'heure actuelles.

Méthode SetPropertyValues

Prend comme entrée un objet SettingsContext et SettingsPropertyValueCollection.

SettingsContext fournit des informations sur l'utilisateur. Vous pouvez utiliser ces informations comme clé primaire pour récupérer des informations de propriété de profil sur l'utilisateur. Utilisez l'objet SettingsContext pour obtenir le nom d'utilisateur et pour savoir si l'utilisateur est authentifié ou anonyme.

SettingsPropertyValueCollection contient une collection d'objets SettingsPropertyValue. Chaque objet SettingsPropertyValue fournit le nom, le type et la valeur de la propriété, ainsi que des informations supplémentaires, comme la valeur par défaut de la propriété et si elle est ou non en lecture seule. La méthode SetPropertyValues met à jour les valeurs des propriétés de profil dans la source de données sur l'utilisateur spécifié.

Appeler la méthode met également à jour les valeurs LastActivityDate et LastUpdatedDate du profil utilisateur spécifié à la date et l'heure actuelles.

Membres ProfileProvider

Membre

Description

Méthode DeleteProfiles

Prend comme entrée un tableau de chaînes de noms d'utilisateurs et supprime de la source de données toutes les informations de profil et les valeurs de propriété pour les noms spécifiés dont le nom d'application correspond à la valeur de la propriété ApplicationName.

Si votre source de données prend en charge les transactions, il est recommandé d'inclure toutes les opérations de suppression dans une transaction, ainsi que de restaurer la transaction et de lever une exception si une opération de suppression échoue.

Méthode DeleteProfiles

Prend comme entrée une collection d'objets ProfileInfo et supprime de la source de données toutes les informations de profil et les valeurs de propriété de chaque profil pour lequel le nom d'application correspond à la valeur de la propriété ApplicationName.

Si votre source de données prend en charge les transactions, il est recommandé d'inclure toutes les opérations de suppression dans une transaction, ainsi que de restaurer la transaction et de lever une exception si une opération de suppression échoue.

Méthode DeleteInactiveProfiles

Prend comme entrée une valeur ProfileAuthenticationOption et un objet DateTime et supprime de la source de données toutes les informations de profil et les valeurs de propriété pour lesquelles la dernière date d'activité est inférieure ou égale à la date et l'heure spécifiées et où le nom d'application correspond à la valeur de la propriété ApplicationName. Le paramètre ProfileAuthenticationOption spécifie si seuls les profils anonymes, les profils authentifiés, ou tous les profils doivent être supprimés.

Si votre source de données prend en charge les transactions, il est recommandé d'inclure toutes les opérations de suppression dans une transaction, ainsi que de restaurer la transaction et de lever une exception si une opération de suppression échoue.

Méthode GetAllProfiles

Prend comme entrée une valeur ProfileAuthenticationOption, un entier qui spécifie l'index de page, un entier qui spécifie la taille de la page, et une référence à un entier dont la valeur est le nombre total de profils. Retourne ProfileInfoCollection qui contient des objets ProfileInfo pour tous les profils de la source de données pour lesquels le nom d'application correspond à la valeur de la propriété ApplicationName. Le paramètre ProfileAuthenticationOption spécifie si seuls les profils anonymes, les profils authentifiés, ou tous les profils doivent être retournés.

Les résultats retournés par la méthode GetAllProfiles sont contraints par les valeurs d'index et de taille de la page. La valeur de taille de la page spécifie le nombre maximal d'objets ProfileInfo à retourner dans ProfileInfoCollection. La valeur d'index de page spécifie la page de résultats à retourner, 1 représentant la première page. Le paramètre de total d'enregistrements est un paramètre de sortie (vous pouvez utiliser ByRef en Visual Basic), dont la valeur est le nombre total de profils. Par exemple, si le magasin de données contient 13 profils pour l'application et si la valeur d'index de page est de 6 pour une taille de page égale à 5, ProfileInfoCollection retourné contient des profils allant du sixième au dixième. La valeur du total d'enregistrements est de 13 lorsque la méthode retourne.

Méthode GetAllInactiveProfiles

Prend comme entrée une valeur ProfileAuthenticationOption, un objet DateTime, un entier qui spécifie l'index de page, un entier qui spécifie la taille de la page, et une référence à un entier dont la valeur est le nombre total de profils. Retourne ProfileInfoCollection qui contient des objets ProfileInfo pour tous les profils de la source de données pour lesquels la dernière date d'activité est inférieure ou égale au DateTime spécifié et où le nom d'application correspond à la valeur de la propriété ApplicationName. Le paramètre ProfileAuthenticationOption spécifie si seuls les profils anonymes, les profils authentifiés, ou tous les profils doivent être retournés.

Les résultats retournés par la méthode GetAllInactiveProfiles sont contraints par les valeurs d'index et de taille de la page. La valeur de taille de la page spécifie le nombre maximal d'objets ProfileInfo à retourner dans ProfileInfoCollection. La valeur d'index de page spécifie la page de résultats à retourner, 1 représentant la première page. Le paramètre de total d'enregistrements est un paramètre de sortie (vous pouvez utiliser ByRef en Visual Basic), dont la valeur est le nombre total de profils. Par exemple, si le magasin de données contient 13 profils pour l'application et si la valeur d'index de page est de 2 pour une taille de page égale à 5, ProfileInfoCollection retourné contient des profils allant du sixième au dixième. La valeur du total d'enregistrements est de 13 lorsque la méthode retourne.

Méthode FindProfilesByUserName

Prend comme entrée une valeur ProfileAuthenticationOption, une chaîne contenant un nom d'utilisateur, un entier qui spécifie l'index de page, un entier qui spécifie la taille de la page, et une référence à un entier dont la valeur est le nombre total de profils. Retourne ProfileInfoCollection qui contient des objets ProfileInfo pour tous les profils de la source de données pour lesquels le nom d'utilisateur correspond au nom d'utilisateur spécifié et où le nom d'application correspond à la valeur de la propriété ApplicationName. Le paramètre ProfileAuthenticationOption spécifie si seuls les profils anonymes, les profils authentifiés, ou tous les profils doivent être retournés.

Si votre source de données prend en charge des fonctions de recherche supplémentaires, par exemple les caractères génériques, vous pouvez fournir des fonctions de recherche plus étendues pour les noms d'utilisateurs.

Les résultats retournés par la méthode FindProfilesByUserName sont contraints par les valeurs d'index et de taille de la page. La valeur de taille de la page spécifie le nombre maximal d'objets ProfileInfo à retourner dans ProfileInfoCollection. La valeur d'index de page spécifie la page de résultats à retourner, 1 représentant la première page. Le paramètre de total d'enregistrements est un paramètre de sortie (vous pouvez utiliser ByRef en Visual Basic), dont la valeur est le nombre total de profils. Par exemple, si le magasin de données contient 13 profils pour l'application et si la valeur d'index de page est de 2 pour une taille de page égale à 5, ProfileInfoCollection retourné contient des profils allant du sixième au dixième. La valeur du total d'enregistrements est de 13 lorsque la méthode retourne.

Méthode FindInactiveProfilesByUserName

Prend comme entrée une valeur ProfileAuthenticationOption, une chaîne contenant un nom d'utilisateur, un objet DateTime, un entier qui spécifie l'index de page, un entier qui spécifie la taille de la page, et une référence à un entier dont la valeur est le nombre total de profils. Retourne ProfileInfoCollection qui contient des objets ProfileInfo pour tous les profils de la source de données pour lesquels le nom d'utilisateur correspond au nom d'utilisateur spécifié, où la dernière date d'activité est inférieure ou égale au DateTime spécifié, et où le nom d'application correspond à la valeur de la propriété ApplicationName. Le paramètre ProfileAuthenticationOption spécifie si seuls les profils anonymes, les profils authentifiés, ou tous les profils doivent être retournés.

Si votre source de données prend en charge des fonctions de recherche supplémentaires, par exemple les caractères génériques, vous pouvez fournir des fonctions de recherche plus étendues pour les noms d'utilisateurs.

Les résultats retournés par la méthode FindInactiveProfilesByUserName sont contraints par les valeurs d'index et de taille de la page. La valeur de taille de la page spécifie le nombre maximal d'objets ProfileInfo à retourner dans ProfileInfoCollection. La valeur d'index de page spécifie la page de résultats à retourner, 1 représentant la première page. Le paramètre de total d'enregistrements est un paramètre de sortie (vous pouvez utiliser ByRef en Visual Basic), dont la valeur est le nombre total de profils. Par exemple, si le magasin de données contient 13 profils pour l'application et si la valeur d'index de page est de 2 pour une taille de page égale à 5, ProfileInfoCollection retourné contient des profils allant du sixième au dixième. La valeur du total d'enregistrements est de 13 lorsque la méthode retourne.

GetNumberOfInactiveProfiles, méthode

Prend comme entrée une valeur ProfileAuthenticationOption et un objet DateTime, et retourne le compte de tous les profils de la source de données pour lesquels la dernière date d'activité est inférieure ou égale au DateTime spécifié et où le nom d'application correspond à la valeur de la propriété ApplicationName. Le paramètre ProfileAuthenticationOption spécifie si seuls les profils anonymes, les profils authentifiés, ou tous les profils doivent être comptabilisés.

ApplicationName

Comme les fournisseurs de profils stockent les informations de profil séparément pour chaque application, vous devez vous assurer que votre schéma de données, ainsi que les requêtes et les mises à jour, incluent le nom d'application. Par exemple, la commande suivante permet de récupérer une valeur de propriété depuis une base de données à partir du nom d'utilisateur et selon que le profil est ou non anonyme. Elle vérifie aussi que la valeur ApplicationName est incluse dans la requête.

SELECT Property FROM PropertyTable 
  WHERE Username = 'user1' AND IsAnonymous = False 
  AND ApplicationName = 'MyApplication'

Voir aussi

Tâches

Comment : créer et exécuter l'exemple de fournisseur de profils

Concepts

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

Fournisseurs de profils ASP.NET