Condividi tramite


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 dell'appartenenza ASP.NET e dei ruoli ASP.NET e per l'uso SqlRoleProvider di per archiviare le informazioni sull'appartenenza e sul ruolo in un database di SQL Server. Gli utenti vengono autenticati con l'autenticazione basata su form 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 è nel ruolo Administrators prima di consentire all'utente di visualizzare i ruoli di altri utenti.

Commenti

ASP.NET la gestione dei ruoli consente di gestire l'autorizzazione per l'applicazione in base a gruppi di utenti, definiti ruoli. Assegnando gli utenti ai ruoli, è possibile controllare l'accesso a parti o funzionalità diverse dell'applicazione Web in base al ruolo anziché, o oltre a, specificando l'autorizzazione in base al nome utente. Ad esempio, un'applicazione dipendente può avere ruoli come Manager, Dipendenti, Direttori 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à 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 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 Forms. Gli utenti anonimi non possono essere assegnati a un ruolo. I ruoli possono essere usati indipendentemente o insieme alle classi ASP.NET Membership .

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

La Roles classe consente anche di creare ed eliminare ruoli e di aggiungere 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 ai ruoli. La WindowsTokenRoleProvider classe verifica l'appartenenza solo ai gruppi di sicurezza di Windows. In questo caso, è necessario usare la gestione degli account utente di Windows anziché ASP.NET ruoli per creare ed eliminare gruppi e gestire l'appartenenza ai gruppi.

È possibile archiviare le informazioni sui ruoli in diverse origini dati.

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

  • È possibile archiviare le informazioni sui ruoli in un database di SQL Server usando la SqlRoleProvider classe .

  • Se si dispone di informazioni sul ruolo esistenti o si desidera archiviare le informazioni sul ruolo in e recuperare 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 tale 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 sui ruoli. 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 più 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 cookie o 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 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