Partilhar via


Exemplo de Implementação de Provedor de Associação

Descreve os provedores de associação de exemplo e seu esquema de fonte de dados com suporte.

Os tópicos a seguir incluem o código para uma implementação do exemplo do provedor de associação.O provedor de exemplo usa o .NET Framework Data Provider para ODBC para conectar-se a uma fonte de dados ODBC.O exemplo usa um banco de dados Access como fonte de dados.

Este tópico descreve detalhes da implementação sobre o provedor de associação de exemplo e descreve como criar o exemplo e configurar um aplicativo ASP.NET para usar o Provedor de exemplo.

Observação:

Como as fontes de dados contêm diferentes sintaxes SQL, alguns comandos irão funcionar com uma fonte de dados e não com outra.Portanto, você deve criar um provedor de associação específico para sua fonte de dados mesmo se você esteja usando o .NET Framework Data Provider para ODBC ou o .NET Framework Data Provider para OLEDB para acessar a fonte de dados, por exemplo, SybaseMembershipProvider, OracleMembershipProvider, e assim por diante.

Há duas versões do provedor de exemplo incluídos: um no Visual Basic e outro em translation from VPE for Csharp.Código de exemplo pode ser encontrado no Como: Exemplo de Implementação de Provedor de Associação.

Esquema de banco de dados

Para criar a tabela do Access usada pelo provedor exemplo, emita esta consulta de definição de dados em um banco de dados Access novo ou existente.

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
)

Acesso a Log de eventos

Se o provedor de exemplo encontrar uma exceção ao trabalhar com o fonte de dados, ele grava os detalhes de exceção para o log de eventos do aplicativo ao invés de retornar a exceção para o aplicativo ASP.NET.Isso é feito como uma medida de segurança para impedir que informações particulares sobre a fonte de dados sejam expostas no aplicativo ASP.NET.

O provedor de exemplo especifica um evento Source de "OdbcMembershipProvider". Antes de seu aplicativo ASP.NET ser capaz de gravar o log de eventos do aplicativo com êxito, será necessário criar a chave de registro a seguir.

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

Se você não desejar que o provedor de exemplo grave as exceções no log de eventos, em seguida, você pode definir o atributo writeExceptionsToEventLog para false no arquivo Web.config.

Criando o provedor exemplo

Para usar o Provedor exemplo, você pode colocar seu código-fonte no Diretório App_Code do seu aplicativo.Observe que se você já tiver código-fonte no Diretório App_Code do seu aplicativo, você deve adicionar a versão do provedor de exemplo que está escrita na mesmo linguagem que o código existente no Diretório.O provedor será compilado pelo ASP.NET quando seu aplicativo for solicitado.

Você pode também compilar o provedor de exemplo como uma biblioteca e colocá-lo no Diretório Bin do seu aplicativo da Web, ou fortemente denomine-o e coloque-o no GAC.O comando a seguir mostra como compilar o provedor de exemplo usando o compilador de linha de comando.

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

Usando o provedor exemplo em um aplicativo ASP.NET

O exemplo a seguir mostra o arquivo Web.config para um aplicativo ASP.NET configurado para usar o Provedor exemplo.O arquivo de configuração pressupõe a existência de dois arquivos, CreateUser.aspx e RetrievePassword.aspx.Os dois arquivos são acessíveis a todos os usuários, mesmo aqueles que estão conectados.

O exemplo usa um ODBC DSN nomeado "MembershipUsers" para obter informações de conexão para o banco de dados Access.Para usar o provedor exemplo, será necessário criar o DSN do sistema "MembershipUsers" ou fornecer uma cadeia de caracteres de conexão ODBC válida com seu banco de dados.

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

Consulte também

Conceitos

Implementando um Provedor de Associação

Outros recursos

Gerenciando usuários usando Associação