Roles Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Gestisce l'appartenenza degli utenti ai ruoli per il controllo delle autorizzazioni in un'applicazione ASP.NET. Questa 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 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 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 è 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 utenti ai ruoli, è possibile controllare l'accesso a parti o funzionalità diverse dell'applicazione Web in base al ruolo anziché specificare 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à 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 gli utenti anonimi) e quindi consente solo agli utenti nel 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 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 ai ruoli 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.
Annotazioni
Se l'applicazione è stata configurata per l'uso della WindowsTokenRoleProvider classe , non è possibile modificare ruoli o appartenenze ai ruoli. La WindowsTokenRoleProvider classe verifica solo l'appartenenza 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 sui ruoli in e recuperare informazioni sul ruolo da un'origine dati diversa da Windows, da un archivio autorizzazioni o DA 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 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 tale 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 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 ASP.NET ruoli. 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à
| Nome | Descrizione |
|---|---|
| ApplicationName |
Ottiene o imposta il nome dell'applicazione per cui archiviare e recuperare le informazioni sul ruolo. |
| CacheRolesInCookie |
Ottiene un valore che indica se i ruoli dell'utente corrente vengono memorizzati nella cache in un cookie. |
| CookieName |
Ottiene il nome del cookie in cui vengono memorizzati i nomi dei ruoli. |
| CookiePath |
Ottiene il percorso del cookie dei nomi dei ruoli memorizzati nella cache. |
| CookieProtectionValue |
Ottiene un valore che indica il modo in cui i nomi dei ruoli memorizzati nella cache in un cookie sono protetti. |
| CookieRequireSSL |
Ottiene un valore che indica se il cookie dei nomi di ruolo richiede SSL per essere restituito al server. |
| CookieSlidingExpiration |
Indica se la data e l'ora di scadenza del cookie dei nomi dei ruoli verranno reimpostate periodicamente. |
| CookieTimeout |
Ottiene il numero di minuti prima della scadenza del cookie dei ruoli. |
| CreatePersistentCookie |
Ottiene un valore che indica se il cookie dei nomi di ruolo è basato su sessione o persistente. |
| Domain |
Ottiene il valore del dominio del cookie role-names. |
| Enabled |
Ottiene o imposta un valore che indica se la gestione dei ruoli è abilitata per l'applicazione Web corrente. |
| MaxCachedResults |
Ottiene il numero massimo di nomi di ruolo da memorizzare nella cache 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
| Nome | Descrizione |
|---|---|
| AddUsersToRole(String[], String) |
Aggiunge gli utenti specificati al ruolo specificato. |
| AddUsersToRoles(String[], String[]) |
Aggiunge gli utenti specificati 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 vengono memorizzati i nomi dei ruoli. |
| DeleteRole(String, Boolean) |
Rimuove un ruolo dall'origine dati. |
| DeleteRole(String) |
Rimuove un ruolo dall'origine dati. |
| FindUsersInRole(String, String) |
Ottiene un elenco di utenti in un ruolo specificato in cui il nome utente contiene il nome utente specificato da trovare. |
| GetAllRoles() |
Ottiene un elenco di tutti i ruoli per l'applicazione. |
| GetRolesForUser() |
Ottiene un elenco dei ruoli in cui si trova l'utente attualmente connesso. |
| GetRolesForUser(String) |
Ottiene un elenco dei ruoli in cui si trova un utente. |
| GetUsersInRole(String) |
Ottiene un elenco di utenti nel ruolo specificato. |
| IsUserInRole(String, String) |
Ottiene un valore che indica se l'utente specificato si trova nel ruolo specificato. L'API deve essere chiamata solo nel contesto di un thread di richiesta ASP.NET e, in questo caso d'uso approvato, è thread-safe. |
| IsUserInRole(String) |
Ottiene un valore che indica se l'utente attualmente connesso si trova nel ruolo specificato. L'API deve essere chiamata solo nel contesto di un thread di richiesta ASP.NET e, in questo caso d'uso approvato, è 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[]) |
Rimuove 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. |