Roles Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 informations d’appartenance et de SqlRoleProvider 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é est dans le rôle Administrateurs avant de permettre à l’utilisateur d’afficher les rôles des autres utilisateurs.
Remarques
ASP.NET gestion des rôles vous permet de gérer l’autorisation de 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 spécifier l’autorisation en fonction du nom d’utilisateur, ou en plus de. Par exemple, une application d’employé peut avoir des rôles tels que Gestionnaires, Employés, Administrateurs, etc., 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 être dans 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 est 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 de 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 à partir d’un fichier Web.config exige que les utilisateurs se connectent (en refusant les utilisateurs anonymes), puis autorisent uniquement les utilisateurs du rôle Administrateurs à y accéder.
<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 une autorisation basée sur des rôles, les utilisateurs de votre application doivent fournir une identité d’utilisateur authentifiée. Vous pouvez authentifier les utilisateurs à l’aide de l’authentification Windows ou Forms. Les utilisateurs anonymes ne peuvent pas être affectés à un rôle. Les rôles peuvent être utilisés indépendamment des classes ASP.NET Membership ou conjointement avec celles-ci.
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 vous pouvez 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 au rôle, 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 la gestion des comptes d’utilisateur Windows plutôt que 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 les informations de rôle dans une base de données SQL Server à l’aide de la SqlRoleProvider classe .
Si vous disposez d’informations de rôle existantes ou si vous souhaitez stocker des informations de rôle dans une source de données autre que Windows, un magasin d’autorisations ou SQL Server, vous pouvez implémenter un fournisseur de rôle 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ôle.
Si le navigateur d’un utilisateur accepte les cookies, vous pouvez stocker les informations de rôle de 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 pour être stockées dans un cookie, ASP.NET stocke uniquement les dernières informations de rôle utilisées dans le cookie, puis recherche des informations de rôle supplémentaires dans la source de données si nécessaire. Si le navigateur de l’utilisateur ne prend pas en charge les cookies ou si 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 vérifie 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. |