Partager via


Exemple d'implémentation d'un fournisseur d'appartenances

Mise à jour : novembre 2007

Décrit les exemples de fournisseurs d'appartenances et le schéma de source de données qu'ils prennent en charge.

Les rubriques suivantes incluent le code d'un exemple d'implémentation de fournisseur d'appartenances. L'exemple de fournisseur utilise le fournisseur de données .NET Framework pour ODBC pour se connecter à une source de données ODBC. L'exemple utilise une base de données Access comme source de données.

Cette rubrique donne des détails sur l'implémentation de l'exemple de fournisseur d'appartenances et indique comment générer cet exemple et comment configurer une application ASP.NET pour l'utiliser.

Remarque :

Étant donné que les sources de données diffèrent sur le plan de la syntaxe SQL, certaines commandes ne fonctionneront qu'avec une source de données particulière. Par conséquent, vous devez créer un fournisseur d'appartenances propre à votre source de données, même si vous utilisez le fournisseur de données .NET Framework pour ODBC ou pour OLEDB pour accéder à votre source de données, par exemple, SybaseMembershipProvider, OracleMembershipProvider, et ainsi de suite.

Deux versions de l'exemple de fournisseur sont incluses : une en langage Visual Basic et une autre en langage C#. Vous trouverez un exemple de code dans Comment : échantillonner l'implémentation d'un fournisseur d'appartenances.

Schéma de base de données

Pour créer la table Access utilisée par l'exemple de fournisseur, émettez la requête de définition de données suivante dans une base de données Access nouvelle ou existante.

CREATE TABLE Users
(
  PKID Guid NOT NULL PRIMARY KEY,
  Username Text (255) NOT NULL,
  ApplicationName Text (255) NOT NULL,
  Email Text (128) NOT NULL,
  Comment Text (255),
  Password Text (128) NOT NULL,
  PasswordQuestion Text (255),
  PasswordAnswer Text (255),
  IsApproved YesNo, 
  LastActivityDate DateTime,
  LastLoginDate DateTime,
  LastPasswordChangedDate DateTime,
  CreationDate DateTime, 
  IsOnLine YesNo,
  IsLockedOut YesNo,
  LastLockedOutDate DateTime,
  FailedPasswordAttemptCount Integer,
  FailedPasswordAttemptWindowStart DateTime,
  FailedPasswordAnswerAttemptCount Integer,
  FailedPasswordAnswerAttemptWindowStart DateTime
)

Accès au journal des événements

Si l'exemple de fournisseur rencontre une exception lorsqu'il travaille avec la source de données, il écrit les détails de l'exception dans le journal des événements de l'application plutôt que de retourner l'exception à l'application ASP.NET. Cette opération est exécutée comme une mesure de sécurité visant à empêcher l'exposition des informations privées relatives à la source de données dans l'application ASP.NET.

L'exemple de fournisseur spécifie un événement Source "OdbcMembershipProvider". Avant que votre application ASP.NET ne puisse écrire correctement dans le journal des événements de l'application, vous devez créer la clé de Registre suivante.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\OdbcMembershipProvider

Si vous ne souhaitez pas que l'exemple de fournisseur écrive des exceptions dans le journal des événements, vous pouvez affecter à l'attribut writeExceptionsToEventLog la valeur false dans le fichier Web.config.

Génération de l'exemple de fournisseur

Pour utiliser l'exemple de fournisseur, vous pouvez placer votre code source dans le répertoire App_Code de votre application. Notez que, si vous avez déjà le code source dans le répertoire App_Code de votre application, vous devez ajouter la version de l'exemple de fournisseur qui est écrite dans le même langage que le code existant dans le répertoire. Le fournisseur sera compilé par ASP.NET lorsque votre application sera demandée.

Vous pouvez aussi compiler l'exemple de fournisseur en tant que bibliothèque et le placer dans le répertoire Bin de votre application Web, ou lui affecter un nom fort et le placer dans le GAC. La commande suivante montre comment compiler l'exemple de fournisseur à l'aide du compilateur de ligne de commande.

vbc /out:OdbcMembershipProvider.dll /t:library OdbcMembershipProvider.vb /r:System.Web.dll /r:System.Configuration.dll
csc /out:OdbcMembershipProvider.dll /t:library OdbcMembershipProvider.cs /r:System.Web.dll /r:System.Configuration.dll

Utilisation de l'exemple de fournisseur dans une application ASP.NET

L'exemple suivant montre le fichier Web.config pour une application ASP.NET configurée pour utiliser l'exemple de fournisseur. Le fichier de configuration suppose l'existence de deux fichiers, CreateUser.aspx et RetrievePassword.aspx. Ces deux fichiers sont accessibles à tous les utilisateurs, même à ceux qui sont connectés.

L'exemple utilise un DSN ODBC nommé "MembershipUsers" pour obtenir des informations de connexion pour la base de données Access. Pour utiliser l'exemple de fournisseur, vous devez créer le DSN système "MembershipUserse" ou fournir une chaîne de connexion ODBC valide à votre base de données.

<configuration>

  <location path="CreateUser.aspx">
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
    </system.web>
  </location>
  <location path="RetrievePassword.aspx">
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
    </system.web>
  </location>

  <connectionStrings>
    <add name="OdbcServices" connectionString="DSN=MembershipUsers;" />
  </connectionStrings>

  <system.web>

    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
        name=".ASPXFORMSAUTH" />
    </authentication>

    <authorization>
      <deny users="?" />
    </authorization>

    <machineKey
      validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
      decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
      validation="SHA1" />

    <membership defaultProvider="OdbcProvider" userIsOnlineTimeWindow="15">

      <providers>

        <add 
          name="OdbcProvider" 
          type="Samples.AspNet.Membership.OdbcMembershipProvider" 
          connectionStringName="OdbcServices"
          enablePasswordRetrieval="true"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="true" 
          writeExceptionsToEventLog="true" />

      </providers>
    </membership>

  </system.web>
</configuration>

Voir aussi

Concepts

Implémentation d'un fournisseur d'appartenances

Autres ressources

Gestion des utilisateurs à l'aide de l'appartenance