Compartir a través de


Implementación del proveedor de funciones de ejemplo

Actualización: noviembre 2007

Describe el proveedor de funciones de ejemplo y el esquema del origen de datos compatible.

En los temas siguientes se incluye un ejemplo del código de una implementación del proveedor de funciones. El proveedor de ejemplo utiliza el proveedor de datos de .NET Framework para ODBC con el fin de establecer una conexión con un origen de datos ODBC. En este ejemplo se utiliza una base de datos de Microsoft Access como origen de datos.

En este tema se describe la implementación del proveedor de perfiles de ejemplo y la configuración de una aplicación ASP.NET para que utilice este proveedor.

Nota:

Puesto que los orígenes de datos contienen diferentes sintaxis SQL, algunos comandos funcionarán con un origen de datos, pero no con otro. Por consiguiente, debe crear un proveedor de funciones específico para el origen de datos aunque utilice el proveedor de datos de .NET Framework para ODBC o el proveedor de datos de .NET Framework para OLEDB al obtener acceso al origen de datos, por ejemplo, SybaseProfileProvider u OracleProfileProvider.

Para consultar el código del proveedor de ejemplo, vea Cómo: Ejemplo de implementación del proveedor de funciones.

Esquema de la base de datos

El proveedor de funciones de ejemplo utiliza dos tablas de base de datos para administrar la información de las funciones: una tabla Roles, que contiene los nombres de las funciones, y una tabla UsersInRoles, que se utiliza para asociar un nombre de usuario con el nombre de una función de una aplicación.

Para crear las tablas de Microsoft Access que utiliza el proveedor de ejemplo, ejecute la consulta de definición de datos siguiente en una base de datos nueva o en una base de datos existente de Microsoft Access.

CREATE TABLE Roles
(
  Rolename Text (255) NOT NULL,
  ApplicationName Text (255) NOT NULL,
    CONSTRAINT PKRoles PRIMARY KEY (Rolename, ApplicationName)
)

CREATE TABLE UsersInRoles
(
  Username Text (255) NOT NULL,
  Rolename Text (255) NOT NULL,
  ApplicationName Text (255) NOT NULL,
    CONSTRAINT PKUsersInRoles PRIMARY KEY (Username, Rolename, ApplicationName)
)

Acceso al Registro de eventos

Si el proveedor de ejemplo encuentra una excepción mientras trabaja con el origen de datos, escribe los detalles de la excepción en el Registro de eventos de la aplicación en lugar de devolver la excepción en la aplicación ASP.NET. Esto constituye una medida de seguridad para evitar que se exponga información confidencial sobre el origen de datos en la aplicación ASP.NET.

El proveedor de ejemplo especifica un evento Source de "OdbcRoleProvider." Antes de que la aplicación ASP.NET pueda escribir las excepciones correctamente en el Registro de eventos de la aplicación, deberá crear la clave de Registro siguiente:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\OdbcRoleProvider

Si no desea que el proveedor de ejemplo escriba las excepciones en el Registro de eventos, puede definir el atributo del archivo Web.config writeExceptionsToEventLog en false.

Generar el proveedor de ejemplo

Para utilizar el proveedor de ejemplo, puede colocar el código fuente en el directorio App_Code de la aplicación. Tenga en cuenta que si ya tiene código fuente en el directorio App_Code de la aplicación, debe agregar la versión del proveedor de ejemplo que está escrita en el mismo lenguaje que el código existente en el directorio. ASP.NET lo compilará cuando se solicite la aplicación.

También puede compilar este proveedor como biblioteca y colocarlo en el directorio Bin de la aplicación Web o asignarle un nombre seguro y colocarlo en la GAC. El comando siguiente muestra cómo se compila con el compilador de la línea de comandos.

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

Uso del proveedor de ejemplo en una aplicación ASP.NET

En el ejemplo siguiente se muestra el archivo Web.config de una aplicación ASP.NET configurada para que utilice el proveedor de ejemplo. El ejemplo utiliza un DSN ODBC denominado "RolesDSN" para obtener la información de conexión de la base de datos de Microsoft Access. Para utilizar el proveedor de ejemplo, necesitará crear el DSN del sistema "RolesDSN" o proporcionar una cadena de conexión ODBC válida en la base de datos.

En el ejemplo se asume que el sitio Web se ha configurado para que utilice la autenticación de formularios e incluya una página ASP.NET denominada login.aspx que permita que los usuarios inicien sesión.

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

  <system.web>
    <authentication mode="Forms" />
      <forms loginUrl="loginvb.aspx"
        name=".ASPXFORMSAUTH" />
    </authentication>

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

    <roleManager defaultProvider="OdbcRoleProvider" 
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieRequireSSL="false"
      cookieSlidingExpiration="true"
      cookieProtection="All" >
      <providers>
        <clear />
        <add
          name="OdbcRoleProvider"
          type="Samples.AspNet.Roles.OdbcRoleProvider"
          connectionStringName="OdbcServices" 
          applicationName="SampleApplication" 
          writeExceptionsToEventLog="false" />
      </providers>
    </roleManager>

  </system.web>
</configuration>

Vea también

Conceptos

Implementar un proveedor de funciones

Otros recursos

Administrar autorizaciones con funciones

Proteger sitios web ASP.NET