Condividi tramite


Implementazione di un provider di ruoli di esempio

Aggiornamento: novembre 2007

Viene fornita la descrizione del provider di ruoli di esempio e dello schema dell'origine dati supportato.

Negli argomenti riportati di seguito viene fornito il codice relativo all'implementazione di un provider di ruoli di esempio. In questo esempio vengono utilizzati il provider di dati .NET Framework per ODBC per la connessione a un'origine dati ODBC e un database Access come origine dati.

In questo argomento viene descritto come implementare il provider di ruoli di esempio e come configurare un'applicazione ASP.NET per l'utilizzo del provider di esempio.

Nota:

Poiché le origini dati contengono una sintassi SQL differente, alcuni comandi funzioneranno con una specifica origine dati ma non con un'altra. È pertanto necessario creare un provider di ruoli specifico per l'origine dati, ad esempio SybaseProfileProvider o OracleProfileProvider, anche se per l'accesso all'origine dati si sta utilizzando il provider di dati .NET Framework per ODBC o per OLEDB.

Per esaminare il codice del provider di esempio, vedere Procedura: implementazione di un provider di ruoli di esempio.

Schema del database

Il provider di ruoli di esempio utilizza due tabelle di database per gestire le informazioni sui ruoli: una tabella Roles, contenente i nomi dei ruoli e i nomi delle applicazioni, e una tabella UsersInRoles, utilizzata per associare un nome utente a un nome di ruolo per un'applicazione.

Per creare le tabelle Access utilizzate dal provider di esempio, eseguire la seguente query di definizione dei dati in un nuovo database Access o in uno esistente.

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

Accesso al log eventi

Se durante l'utilizzo dell'origine dati il provider di esempio rileva un'eccezione, anziché restituirla all'applicazione ASP.NET scrive i relativi dettagli nel log eventi dell'applicazione. Si tratta di una misura di sicurezza per impedire che nell'applicazione ASP.NET vengano esposte informazioni private relative all'origine dati.

Il provider di esempio specifica "OdbcRoleProvider" come Source degli eventi. Affinché l'applicazione ASP.NET possa scrivere correttamente nel log eventi dell'applicazione è necessario creare la seguente chiave del Registro di sistema.

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

Se non si desidera che il provider di esempio scriva le eccezioni nel log eventi, è possibile impostare l'attributo writeExceptionsToEventLog su false nel file Web.config.

Compilazione del provider di esempio

Per poter utilizzare il provider di esempio, è necessario inserire il codice sorgente nella directory App_Code dell'applicazione. Se nella directory App_Code dell'applicazione esiste già del codice sorgente, è necessario aggiungere la versione del provider di esempio scritta nello stesso linguaggio del codice esistente nella directory. Quando verrà richiesta l'applicazione, il provider verrà compilato da ASP.NET.

In alternativa, è possibile compilare il provider di esempio come libreria e inserirlo nella directory Bin dell'applicazione Web oppure assegnare un nome sicuro al provider e inserirlo nella Global Assembly Cache (GAC). Il seguente comando mostra come compilare il provider di esempio mediante il compilatore basato su riga di comando.

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

Utilizzo del provider di esempio in un'applicazione ASP.NET

Nell'esempio riportato di seguito viene illustrato il file Web.config per un'applicazione ASP.NET configurata per l'utilizzo del provider di esempio. Nell'esempio viene utilizzato un nome origine dati ODBC "RolesDSN" per ottenere le informazioni di connessione relative al database Access. Per utilizzare il provider di esempio, sarà necessario creare il nome origine dati di sistema "RolesDSN" oppure fornire una stringa di connessione ODBC valida per il database.

Nella configurazione di esempio si presuppone che il sito Web sia impostato in modo da utilizzare l'autenticazione basata su form e includa una pagina ASP.NET denominata login.aspx che consente agli utenti di eseguire l'accesso.

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

Vedere anche

Concetti

Implementazione di un provider di ruoli

Altre risorse

Gestione delle autorizzazioni tramite ruoli

Sicurezza dei siti Web ASP.NET