Поделиться через


Пример реализации поставщика членства

Обновлен: Ноябрь 2007

В данном разделе приведено описание примера поставщиков членства и поддерживаемой ими схемы источника данных.

В следующих разделах представлен код примера реализации поставщика членства. Поставщик в примере использует для подключения к источнику данных ODBC поставщик данных платформы .NET Framework для ODBC. В качестве источника данных в примере используется база данных Access.

В этом разделе описываются подробности реализации, касающиеся примера поставщика членства, и даются указания по построению примера и настройке приложения ASP.NET для работы с поставщиком из примера.

44w5aswa.alert_note(ru-ru,VS.90).gifПримечание.

Поскольку в источниках данных используется разный синтаксис SQL, некоторые команды будут работать с одними источниками данных, но не будут работать с другими. Поэтому даже в том случае, если для доступа к источнику данных используется поставщик данных платформы .NET Framework для ODBC или поставщик данных платформы .NET Framework для OLEDB — например, SybaseMembershipProvider, OracleMembershipProvider и т.д., создавать следует поставщик членства, рассчитанный на конкретный источник данных.

В примере представлены две версии поставщика: одна на языке Visual Basic, а другая — на C#. Код примера можно найти в разделе Практическое руководство. Образец реализации поставщика членства.

Схема базы данных

Чтобы создать таблицу Access, которая будет использоваться поставщиком из данного примера, выполните следующий запрос определения данных в новой или существующей базе данных Access.

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
)

Доступ к журналу событий

Если при работе с источником данных в этом примере поставщика возникает исключение, то оно не возвращается приложению ASP.NET; вместо этого данные исключения записываются в журнал событий приложений. Это служит мерой безопасности, предотвращающей передачу закрытых данных об источнике данных в приложение ASP.NET.

Поставщик в примере задает событие Source поставщика «OdbcMembershipProvider». Прежде чем приложение ASP.NET сможет успешно выполнять запись в журнал событий приложений, необходимо создать следующий раздел реестра.

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

Если поставщик в примере не должен записывать данные об исключениях в журнал событий, следует присвоить атрибуту writeExceptionsToEventLog в файле Web.config значение false.

Построение поставщика из примера

Чтобы использовать пример поставщика, можно поместить исходный код в каталог App_Code приложения. Обратите внимание, что в том случае, если в этом каталоге уже имеется исходный код, необходимо добавить версию данного примера поставщика, написанную на том же языке, что и код, уже имеющийся в каталоге. Поставщик компилируется средствами ASP.NET при вызове приложения.

Также можно скомпилировать пример поставщика в качестве библиотеки и поместить эту библиотеку в каталог Bin веб-приложения, или же присвоить этой библиотеке строгое имя и поместить ее в глобальный кэш сборок (GAC). Приведенная ниже команда показывает, как можно скомпилировать поставщик из примера с помощью компилятора командной строки.

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

Использование поставщика из примера в приложении ASP.NET

В приведенном ниже примере кода показано, как настроить использование поставщика в файле Web.config приложения ASP.NET. В файле конфигурации предполагается существование двух файлов — CreateUser.aspx и RetrievePassword.aspx. Оба файла доступны всем пользователям, в том числе и выполнившим вход.

В примере для получения сведений о соединении с базой данных Access используется DSN ODBC «MembershipUsers». Для использования поставщика из примера необходимо создать системный DSN «MembershipUsers» или указать допустимую строку соединения ODBC для базы данных.

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

См. также

Основные понятия

Реализация поставщика членства

Другие ресурсы

Управление пользователями путем объединения их в группы