Roles Classe

Définition

Gère l'appartenance de l'utilisateur aux rôles pour vérifier ses autorisations dans une application ASP.NET. Cette classe ne peut pas être héritée.

public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
Héritage
Roles

Exemples

L’exemple suivant montre le fichier Web.config d’une application configurée pour utiliser à la fois l’appartenance ASP.NET et les rôles ASP.NET et pour stocker les SqlRoleProvider informations d’appartenance et de rôle dans une base de données SQL Server. Les utilisateurs sont authentifiés avec l’authentification par formulaire et seuls les utilisateurs du rôle Administrateurs sont autorisés à accéder à l’application.

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

L’exemple de code suivant vérifie par programmation si l’utilisateur connecté se trouve dans le rôle Administrateurs avant d’autoriser l’utilisateur à afficher les rôles d’autres utilisateurs.

Remarques

ASP.NET gestion des rôles vous permet de gérer l’autorisation pour votre application en fonction de groupes d’utilisateurs, appelés rôles. En affectant des utilisateurs à des rôles, vous pouvez contrôler l’accès à différentes parties ou fonctionnalités de votre application web en fonction du rôle au lieu de, ou en plus, en spécifiant l’autorisation en fonction du nom d’utilisateur. Par exemple, une application d’employé peut avoir des rôles tels que gestionnaires, employés, directeurs, et ainsi de suite, où des privilèges différents sont spécifiés pour chaque rôle.

Les utilisateurs peuvent appartenir à plusieurs rôles. Par exemple, si votre site est un forum de discussion, certains utilisateurs peuvent jouer le rôle des membres et des modérateurs. Vous pouvez définir chaque rôle pour avoir des privilèges différents sur le site, et un utilisateur qui se trouve dans les deux rôles aurait alors les deux ensembles de privilèges.

Pour activer la gestion des rôles pour votre application ASP.NET, utilisez l’élément roleManager de la system.web section dans le fichier Web.config pour votre application, comme illustré dans l’exemple suivant.

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

Vous pouvez spécifier des règles d’autorisation dans le fichier de configuration de votre application web ou par programmation dans votre code. Par exemple, la section d’autorisation suivante d’un fichier Web.config oblige les utilisateurs à se connecter (en refusant les utilisateurs anonymes), puis autorise uniquement les utilisateurs du rôle Administrateurs à avoir accès.

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

Si vous utilisez la authorization section du fichier Web.config de votre application pour spécifier l’autorisation en fonction des rôles, les utilisateurs de votre application doivent fournir une identité d’utilisateur authentifiée. Vous pouvez authentifier les utilisateurs à l’aide de Windows ou de l’authentification par formulaire. Les utilisateurs anonymes ne peuvent pas être affectés à un rôle. Les rôles peuvent être utilisés indépendamment ou conjointement avec les classes ASP.NETMembership.

Pour vérifier l’appartenance au rôle par programmation, vous pouvez utiliser la Roles classe ou la Page.User propriété avec la IsUserInRole méthode, ou utiliser la Page.User propriété avec la IPrincipal.IsInRole méthode. Pour obtenir un exemple de code qui vérifie par programmation l’appartenance aux rôles, consultez la section Exemple de cette rubrique.

La Roles classe vous permet également de créer et de supprimer des rôles et d’ajouter des utilisateurs à des rôles ou de les supprimer.

Notes

Si vous avez configuré votre application pour utiliser la WindowsTokenRoleProvider classe, vous ne pouvez pas modifier les rôles ou l’appartenance aux rôles. La WindowsTokenRoleProvider classe vérifie l’appartenance aux groupes de sécurité Windows uniquement. Dans ce cas, vous devez utiliser Windows gestion des comptes d’utilisateur au lieu de ASP.NET rôles pour créer et supprimer des groupes et gérer l’appartenance aux groupes.

Vous pouvez stocker des informations de rôle dans plusieurs sources de données.

  • Vous pouvez utiliser la WindowsTokenRoleProvider classe pour récupérer des informations de rôle en fonction de l’appartenance à des groupes Windows.

  • Vous pouvez stocker des informations de rôle dans une base de données SQL Server à l’aide de la SqlRoleProvider classe.

  • Si vous avez des informations de rôle existantes ou si vous souhaitez stocker des informations de rôle dans et récupérer des informations de rôle à partir d’une source de données autre que Windows, un magasin d’autorisations ou SQL Server, vous pouvez implémenter un fournisseur de rôles personnalisé en créant une classe qui hérite de la RoleProvider classe abstraite. Pour plus d’informations, consultez Implémentation d’un fournisseur de rôles.

Si le navigateur d’un utilisateur accepte les cookies, vous pouvez stocker des informations de rôle pour cet utilisateur dans un cookie sur l’ordinateur de l’utilisateur. Sur chaque demande de page, ASP.NET lit les informations de rôle de cet utilisateur à partir du cookie. Cela peut améliorer les performances de l’application en réduisant la quantité de communication requise avec la source de données pour récupérer les informations de rôle. Si les informations de rôle d’un utilisateur sont trop longues à stocker dans un cookie, ASP.NET stocke uniquement les informations de rôle les plus récemment utilisées dans le cookie, puis recherche des informations de rôle supplémentaires dans la source de données en fonction des besoins. Si le navigateur de l’utilisateur ne prend pas en charge les cookies ou les cookies sont désactivés, les informations de rôle ne sont pas mises en cache dans un cookie.

Vous pouvez améliorer la fiabilité des noms de rôles mis en cache dans un cookie en spécifiant une CookieProtectionValue propriété lorsque vous configurez ASP.NET rôles. La valeur par défaut CookieProtectionValue est All, qui chiffre les noms de rôles dans le cookie et valide que le contenu du cookie n’a pas été modifié.

Propriétés

ApplicationName

Obtient ou définit le nom de l'application pour laquelle stocker ou récupérer des informations de rôle.

CacheRolesInCookie

Obtient ou définit une valeur indiquant si les rôles de l'utilisateur actuel sont mis en cache dans un cookie.

CookieName

Obtient le nom du cookie contenant les noms de rôles en cache.

CookiePath

Obtient le chemin d’accès pour le cookie contenant les noms de rôles en cache.

CookieProtectionValue

Obtient une valeur indiquant comment les noms de rôles mis en cache dans un cookie sont protégés.

CookieRequireSSL

Obtient une valeur indiquant si le cookie contenant les noms de rôles nécessite une connexion SSL pour être retourné au serveur.

CookieSlidingExpiration

Indique si la date et l'heure d'expiration du cookie contenant les noms de rôles seront périodiquement réinitialisées.

CookieTimeout

Obtient le nombre de minutes avant l'expiration du cookie de rôles.

CreatePersistentCookie

Obtient une valeur indiquant si le cookie des noms de rôles se fonde sur la session ou est persistant.

Domain

Obtient la valeur du domaine du cookie de noms de rôles.

Enabled

Obtient ou définit une valeur indiquant si la gestion des rôles est activée pour l'application Web actuelle.

MaxCachedResults

Obtient le nombre maximal de noms de rôles à mettre en cache pour un utilisateur.

Provider

Obtient le fournisseur de rôle par défaut de l'application.

Providers

Obtient une collection de fournisseurs de rôles pour l’application ASP.NET.

Méthodes

AddUsersToRole(String[], String)

Ajoute les utilisateurs spécifiés au rôle spécifié.

AddUsersToRoles(String[], String[])

Ajoute les utilisateurs spécifiés aux rôles spécifiés.

AddUserToRole(String, String)

Ajoute l'utilisateur spécifié au rôle spécifié.

AddUserToRoles(String, String[])

Ajoute l'utilisateur spécifié aux rôles spécifiés.

CreateRole(String)

Ajoute un nouveau rôle à la source de données.

DeleteCookie()

Supprime le cookie contenant les noms de rôles en cache.

DeleteRole(String)

Supprime un rôle de la source de données.

DeleteRole(String, Boolean)

Supprime un rôle de la source de données.

FindUsersInRole(String, String)

Obtient une liste des utilisateurs figurant dans un rôle spécifié contenant le nom d'utilisateur correspondant au nom spécifié.

GetAllRoles()

Obtient la liste de tous les rôles pour l'application.

GetRolesForUser()

Obtient une liste des rôles dans lesquels figure l'utilisateur actuellement connecté.

GetRolesForUser(String)

Obtient une liste des rôles dans lesquels figure l'utilisateur.

GetUsersInRole(String)

Obtient une liste des utilisateurs du rôle spécifié.

IsUserInRole(String)

Obtient une valeur indiquant si l'utilisateur actuellement connecté figure dans le rôle spécifié. L’API est censée être appelée uniquement dans le contexte d’un thread de requête ASP.NET, et dans ce cas d’utilisation autorisée elle est sécurisée (thread-safe).

IsUserInRole(String, String)

Obtient une valeur indiquant si l'utilisateur spécifié figure dans le rôle spécifié. L’API est censée être appelée uniquement dans le contexte d’un thread de requête ASP.NET, et dans ce cas d’utilisation autorisée elle est sécurisée (thread-safe).

RemoveUserFromRole(String, String)

Supprime l'utilisateur spécifié du rôle spécifié.

RemoveUserFromRoles(String, String[])

Supprime l'utilisateur spécifié des rôles spécifiés.

RemoveUsersFromRole(String[], String)

Supprime les utilisateurs spécifiés du rôle spécifié.

RemoveUsersFromRoles(String[], String[])

Supprime les noms d'utilisateurs spécifiés des rôles spécifiés.

RoleExists(String)

Obtient une valeur qui indique si le nom de rôle spécifié existe déjà dans la source de données du rôle.

S’applique à

Voir aussi