Roles Classe

Definizione

Gestisce l'appartenenza degli utenti nei ruoli per il controllo delle autorizzazioni in un'applicazione ASP.NET. La classe non può essere ereditata.

public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
Ereditarietà
Roles

Esempio

Nell'esempio seguente viene illustrato il file di Web.config per un'applicazione configurata per l'uso sia dell'appartenenza ASP.NET che dei ruoli ASP.NET e per l'uso per archiviare le informazioni sull'appartenenza e sul SqlRoleProvider ruolo in un database SQL Server. Gli utenti vengono autenticati con l'autenticazione dei moduli e solo gli utenti nel ruolo Administrators sono autorizzati ad accedere all'applicazione.

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
  </connectionStrings>

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

    <authorization>
      <deny users="?" />
      <allow roles="Administrators" />
      <deny users="*" />
    </authorization>

    <membership defaultProvider="AspNetSqlProvider" userIsOnlineTimeWindow="15">
    </membership>

    <roleManager defaultProvider="SqlProvider"
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieRequireSSL="true"
      cookieSlidingExpiration="true"
      cookieProtection="All" >

      <providers>
        <clear />
        <add
          name="SqlProvider"
          type="System.Web.Security.SqlRoleProvider"
          connectionStringName="SqlServices"
          applicationName="SampleApplication" />
        </providers>

    </roleManager>
  </system.web>
</configuration>

Nell'esempio di codice seguente viene verificato a livello di codice se l'utente connesso si trova nel ruolo Administrators prima di consentire all'utente di visualizzare i ruoli di altri utenti.

Commenti

ASP.NET gestione dei ruoli consente di gestire l'autorizzazione per l'applicazione in base ai gruppi di utenti, denominati ruoli. Assegnando utenti ai ruoli, è possibile controllare l'accesso a parti o funzionalità diverse dell'applicazione Web in base al ruolo anziché a, oltre a, specificando l'autorizzazione in base al nome utente. Ad esempio, un'applicazione dipendente potrebbe avere ruoli come Manager, Dipendenti, Amministratori e così via, in cui vengono specificati privilegi diversi per ogni ruolo.

Gli utenti possono appartenere a più ruoli. Ad esempio, se il sito è un forum di discussione, alcuni utenti potrebbero essere nel ruolo di membri e moderatori. È possibile definire ogni ruolo per avere privilegi diversi nel sito e un utente che si trova in entrambi i ruoli avrà quindi entrambi i set di privilegi.

Per abilitare la gestione dei ruoli per l'applicazione ASP.NET, usare l'elemento roleManager della system.web sezione nel file Web.config per l'applicazione, come illustrato nell'esempio seguente.

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
  </connectionStrings>

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

  <roleManager defaultProvider="SqlProvider"
    enabled="true"
    cacheRolesInCookie="true"
    cookieName=".ASPROLES"
    cookieTimeout="30"
    cookiePath="/"
    cookieRequireSSL="false"
    cookieSlidingExpiration="true"
    cookieProtection="All" >
    <providers>
      <add
        name="SqlProvider"
        type="System.Web.Security.SqlRoleProvider"
        connectionStringName="SqlServices"
        applicationName="SampleApplication" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

È possibile specificare le regole di autorizzazione nel file di configurazione per l'applicazione Web o a livello di codice nel codice. Ad esempio, la sezione di autorizzazione seguente da un file di Web.config richiede agli utenti di accedere (negando utenti anonimi) e quindi consente solo agli utenti del ruolo Administrators di avere accesso.

<authorization>
  <deny users="?" />
  <allow roles="Administrators" />
  <deny users="*" />
</authorization>

Se si usa la authorization sezione nel file di Web.config dell'applicazione per specificare l'autorizzazione in base ai ruoli, gli utenti dell'applicazione devono fornire un'identità utente autenticata. È possibile autenticare gli utenti usando l'autenticazione di Windows o Form. Gli utenti anonimi non possono essere assegnati a un ruolo. I ruoli possono essere usati in modo indipendente o in combinazione con le classi ASP.NETMembership.

Per verificare l'appartenenza al ruolo a livello di codice, è possibile usare la classe o la Roles proprietà con il IsUserInRole metodo oppure usare la Page.User proprietà con il IPrincipal.IsInRole Page.User metodo . Per codice di esempio che controlla l'appartenenza al ruolo a livello di codice, vedere la sezione Esempio in questo argomento.

La Roles classe consente inoltre di creare ed eliminare ruoli e di aggiungere utenti a o rimuovere utenti dai ruoli.

Nota

Se l'applicazione è stata configurata per l'uso della WindowsTokenRoleProvider classe, non è possibile modificare i ruoli o l'appartenenza al ruolo. La WindowsTokenRoleProvider classe verifica l'appartenenza solo ai gruppi di sicurezza Windows. In questo caso, è necessario usare Windows gestione degli account utente anziché ASP.NET ruoli per creare ed eliminare gruppi e gestire l'appartenenza ai gruppi.

È possibile archiviare le informazioni sul ruolo in diverse origini dati.

  • È possibile usare la classe per recuperare le informazioni sul ruolo in base all'appartenenza WindowsTokenRoleProvider ai gruppi di Windows.

  • È possibile archiviare le informazioni sul ruolo in un database SQL Server usando la SqlRoleProvider classe .

  • Se sono presenti informazioni sul ruolo o si desidera archiviare informazioni sul ruolo in e recuperare le informazioni sul ruolo da un'origine dati diversa da Windows, un archivio autorizzazioni o SQL Server, è possibile implementare un provider di ruoli personalizzato creando una classe che eredita la RoleProvider classe astratta. Per altre informazioni, vedere Implementazione di un provider di ruoli.

Se il browser di un utente accetta i cookie, è possibile archiviare le informazioni sul ruolo per l'utente in un cookie nel computer dell'utente. In ogni richiesta di pagina ASP.NET legge le informazioni sul ruolo per l'utente dal cookie. Ciò può migliorare le prestazioni dell'applicazione riducendo la quantità di comunicazione necessaria con l'origine dati per recuperare le informazioni sul ruolo. Se le informazioni sul ruolo per un utente sono troppo lunghe da archiviare in un cookie, ASP.NET archivia solo le informazioni sul ruolo usate di recente nel cookie e quindi cerca informazioni aggiuntive sul ruolo nell'origine dati in base alle esigenze. Se il browser dell'utente non supporta i cookie o i cookie sono disabilitati, le informazioni sul ruolo non vengono memorizzate nella cache in un cookie.

È possibile migliorare l'affidabilità dei nomi dei ruoli memorizzati nella cache in un cookie specificando una CookieProtectionValue proprietà quando si configurano i ruoli di ASP.NET. Il valore predefinito CookieProtectionValue è All, che crittografa i nomi dei ruoli nel cookie e verifica che il contenuto del cookie non sia stato modificato.

Proprietà

ApplicationName

Ottiene o imposta il nome dell'applicazione per cui archiviare e recuperare informazioni sui ruoli.

CacheRolesInCookie

Ottiene un valore che indica se i ruoli dell'utente corrente sono memorizzati in un cookie.

CookieName

Ottiene il nome del cookie in cui sono memorizzati i nomi dei ruoli.

CookiePath

Ottiene il percorso del cookie dei nomi di ruoli memorizzati.

CookieProtectionValue

Ottiene un valore che indica la modalità di protezione dei nomi di ruoli memorizzati in un cookie.

CookieRequireSSL

Ottiene un valore che indica se il cookie dei nomi di ruoli richiede SSL per essere restituito al server.

CookieSlidingExpiration

Indica se la data e l'ora di scadenza del cookie dei nomi di ruoli verranno reimpostate periodicamente.

CookieTimeout

Ottiene il numero di minuti prima della scadenza del cookie.

CreatePersistentCookie

Ottiene un valore che indica se il cookie dei nomi di ruoli è basato sulla sessione o persistente.

Domain

Ottiene il valore del dominio del cookie dei nomi di ruoli.

Enabled

Ottiene o imposta un valore che indica se la gestione ruoli è abilitata per l'applicazione Web corrente.

MaxCachedResults

Ottiene il numero massimo di nomi di ruoli da memorizzare per un utente.

Provider

Ottiene il provider di ruoli predefinito per l'applicazione.

Providers

Ottiene una raccolta dei provider di ruoli per l'applicazione ASP.NET.

Metodi

AddUsersToRole(String[], String)

Aggiunge utenti specifici al ruolo specificato.

AddUsersToRoles(String[], String[])

Aggiunge utenti specifici ai ruoli specificati.

AddUserToRole(String, String)

Aggiunge l'utente specificato al ruolo specificato.

AddUserToRoles(String, String[])

Aggiunge l'utente specificato ai ruoli specificati.

CreateRole(String)

Aggiunge un nuovo ruolo all'origine dati.

DeleteCookie()

Elimina il cookie in cui sono memorizzati i nomi di ruoli.

DeleteRole(String)

Rimuove un ruolo dall'origine dati.

DeleteRole(String, Boolean)

Rimuove un ruolo dall'origine dati.

FindUsersInRole(String, String)

Ottiene un elenco di utenti appartenenti a un ruolo specificato in cui il nome utente contiene il nome utente specificato di cui verificare la corrispondenza.

GetAllRoles()

Ottiene un elenco di tutti i ruoli per l'applicazione.

GetRolesForUser()

Ottiene un elenco dei ruoli a cui appartiene l'utente attualmente connesso al sistema.

GetRolesForUser(String)

Ottiene un elenco di ruoli a cui appartiene un utente.

GetUsersInRole(String)

Ottiene un elenco di utenti appartenenti al ruolo specificato.

IsUserInRole(String)

Ottiene un valore che indica se l'utente attualmente connesso al sistema appartiene al ruolo specificato. L'API deve essere chiamata solo all'interno del contesto di un thread di richiesta ASP.NET e in tale caso d'uso sanzionato è thread-safe.

IsUserInRole(String, String)

Ottiene un valore che indica se l'utente specificato appartiene al ruolo specificato. L'API deve essere chiamata solo all'interno del contesto di un thread di richiesta ASP.NET e in tale caso d'uso sanzionato è thread-safe.

RemoveUserFromRole(String, String)

Rimuove l'utente specificato dal ruolo specificato.

RemoveUserFromRoles(String, String[])

Rimuove l'utente specificato dai ruoli specificati.

RemoveUsersFromRole(String[], String)

Rimuove gli utenti specificati dal ruolo specificato.

RemoveUsersFromRoles(String[], String[])

Consente di rimuovere i nomi utente specificati dai ruoli specificati.

RoleExists(String)

Ottiene un valore che indica se il nome del ruolo specificato esiste già nell'origine dati del ruolo.

Si applica a

Vedi anche