WindowsTokenRoleProvider.IsUserInRole Méthode
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.
Obtient une valeur indiquant si l'utilisateur spécifié se trouve dans le rôle Windows intégré spécifié.
Surcharges
IsUserInRole(String, WindowsBuiltInRole) |
Obtient une valeur indiquant si l'utilisateur spécifié se trouve dans le rôle Windows intégré spécifié. |
IsUserInRole(String, String) |
Obtient une valeur indiquant si l'utilisateur spécifié figure dans le groupe Windows spécifié. |
IsUserInRole(String, WindowsBuiltInRole)
Obtient une valeur indiquant si l'utilisateur spécifié se trouve dans le rôle Windows intégré spécifié.
public:
bool IsUserInRole(System::String ^ username, System::Security::Principal::WindowsBuiltInRole role);
public bool IsUserInRole (string username, System.Security.Principal.WindowsBuiltInRole role);
override this.IsUserInRole : string * System.Security.Principal.WindowsBuiltInRole -> bool
Public Function IsUserInRole (username As String, role As WindowsBuiltInRole) As Boolean
Paramètres
- username
- String
Nom d'utilisateur à rechercher sous la forme DOMAINE\nomutilisateur.
- role
- WindowsBuiltInRole
Rôle Windows dans lequel effectuer la recherche.
Retours
true
si l'utilisateur spécifié figure dans le rôle Windows spécifié ; sinon, false
.
Exceptions
username
a la valeur null
.
L'utilisateur en cours d'exécution n'a pas d'identité WindowsIdentity authentifiée associée à User. Pour les scénarios autres que HTTP, l'utilisateur en cours d'exécution n'a pas d'identité WindowsIdentity authentifiée associée à CurrentPrincipal.
- ou -
username
ne correspond pas à Name de l'identité WindowsIdentity en cours.
Exemples
L’exemple de code suivant vérifie par programmation si l’utilisateur actuellement connecté est dans le rôle Administrateurs avant d’autoriser l’utilisateur à afficher les informations sur les rôles de l’application. Pour obtenir un exemple de fichier Web.config qui active la gestion des rôles, consultez WindowsTokenRoleProvider.
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Security.Principal" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
string[] rolesArray;
public void Page_Load()
{
Msg.Text = "";
WindowsPrincipal p = (WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;
if (!p.IsInRole(WindowsBuiltInRole.Administrator))
{
Msg.Text = "You are not authorized to view user roles.";
return;
}
// Bind roles to GridView.
try
{
rolesArray = Roles.GetRolesForUser(User.Identity.Name);
}
catch (HttpException e)
{
Msg.Text = "There is no current logged on user. Role membership cannot be verified.";
return;
}
UserRolesGrid.DataSource = rolesArray;
UserRolesGrid.DataBind();
UserRolesGrid.Columns[0].HeaderText = "Roles for " + User.Identity.Name;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: View User Roles</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>View User Roles</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table border="0" cellspacing="4">
<tr>
<td valign="top"><asp:GridView runat="server" CellPadding="4" id="UserRolesGrid"
AutoGenerateColumns="false" Gridlines="None"
CellSpacing="0" >
<HeaderStyle BackColor="navy" ForeColor="white" />
<Columns>
<asp:TemplateField HeaderText="Roles" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim rolesArray() As String
Public Sub Page_Load()
Msg.Text = ""
Dim provider As WindowsTokenRoleProvider = CType(Roles.Provider, WindowsTokenRoleProvider)
If Not provider.IsUserInRole(User.Identity.Name, _
System.Security.Principal.WindowsBuiltInRole.Administrator) Then
Msg.Text = "You are not authorized to view user roles."
Return
End If
' Bind roles to GridView.
Try
rolesArray = Roles.GetRolesForUser(User.Identity.Name)
Catch e As HttpException
Msg.Text = "There is no current logged on user. Role membership cannot be verified."
Return
End Try
UserRolesGrid.DataSource = rolesArray
UserRolesGrid.DataBind()
UserRolesGrid.Columns(0).HeaderText = "Roles for " & User.Identity.Name
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: View User Roles</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>View User Roles</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table border="0" cellspacing="4">
<tr>
<td valign="top"><asp:GridView runat="server" CellPadding="4" id="UserRolesGrid"
AutoGenerateColumns="false" Gridlines="None"
CellSpacing="0" >
<HeaderStyle BackColor="navy" ForeColor="white" />
<Columns>
<asp:TemplateField HeaderText="Roles" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td>
</tr>
</table>
</form>
</body>
</html>
Remarques
La IsUserInRole méthode vous permet de vérifier si un utilisateur est dans l’un des rôles Windows courants décrits par l’énumération WindowsBuiltInRole . Cette méthode est utile pour les applications localisées dans plusieurs langues. Cette surcharge de la IsUserInRole méthode ne fait pas partie de la RoleProvider classe de base et n’est accessible qu’en castant la Provider propriété de la Roles classe en tant que WindowsTokenRoleProvider type.
Vous pouvez appeler la IsUserInRole méthode uniquement pour l’utilisateur actuellement connecté, comme identifié par la variable de serveur LOGON_USER. Si la valeur fournie dans le username
paramètre n’est pas le nom de l’utilisateur actuellement connecté, une HttpException est levée.
IsUserInRole la méthode ne peut être appelée que pour l’utilisateur actuellement connecté identifié par la variable de serveur LOGON_USER. L’utilisateur connecté actuel doit être un utilisateur authentifié Windows. Pour plus d’informations sur l’authentification ASP.NET et Windows, consultez Authentification ASP.NET.
Voir aussi
S’applique à
IsUserInRole(String, String)
Obtient une valeur indiquant si l'utilisateur spécifié figure dans le groupe Windows spécifié.
public:
override bool IsUserInRole(System::String ^ username, System::String ^ roleName);
public override bool IsUserInRole (string username, string roleName);
override this.IsUserInRole : string * string -> bool
Public Overrides Function IsUserInRole (username As String, roleName As String) As Boolean
Paramètres
- username
- String
Nom d'utilisateur à rechercher sous la forme DOMAINE\nomutilisateur.
- roleName
- String
Groupe Windows à rechercher sous la forme DOMAINE\nomderôle.
Retours
true
si le nom de l'utilisateur spécifié figure dans le groupe Windows spécifié ; sinon, false
.
Exceptions
L'utilisateur en cours d'exécution n'a pas d'identité WindowsIdentity authentifiée associée à User. Pour les scénarios autres que HTTP, l'utilisateur en cours d'exécution n'a pas d'identité WindowsIdentity authentifiée associée à CurrentPrincipal.
- ou -
username
ne correspond pas à Name de l'identité WindowsIdentity en cours.
- ou -
Une défaillance s'est produite en récupérant les informations de groupes Windows de l'utilisateur.
Exemples
L’exemple de code suivant vérifie par programmation si l’utilisateur actuellement connecté est dans le rôle Administrateurs avant d’autoriser l’utilisateur à afficher les informations sur les rôles de l’application. Pour obtenir un exemple de fichier Web.config qui active la gestion des rôles, consultez WindowsTokenRoleProvider.
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
string[] rolesArray;
public void Page_Load()
{
Msg.Text = "";
try
{
if (!Roles.IsUserInRole(User.Identity.Name, @"BUILTIN\Administrators"))
{
Msg.Text = "You are not authorized to view user roles.";
return;
}
}
catch (HttpException e)
{
Msg.Text = "There is no current logged on user. Role membership cannot be verified.";
return;
}
// Bind roles to GridView.
rolesArray = Roles.GetRolesForUser(User.Identity.Name);
UserRolesGrid.DataSource = rolesArray;
UserRolesGrid.DataBind();
UserRolesGrid.Columns[0].HeaderText = "Roles for " + User.Identity.Name;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: View User Roles</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>View User Roles</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table border="0" cellspacing="4">
<tr>
<td valign="top"><asp:GridView runat="server" CellPadding="4" id="UserRolesGrid"
AutoGenerateColumns="false" Gridlines="None"
CellSpacing="0" >
<HeaderStyle BackColor="navy" ForeColor="white" />
<Columns>
<asp:TemplateField HeaderText="Roles" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim rolesArray() As String
Public Sub Page_Load()
Msg.Text = ""
Try
If Not Roles.IsUserInRole(User.Identity.Name, "BUILTIN\Administrators") Then
Msg.Text = "You are not authorized to view user roles."
Return
End If
Catch e As HttpException
Msg.Text = "There is no current logged on user. Role membership cannot be verified."
Return
End Try
' Bind roles to GridView.
rolesArray = Roles.GetRolesForUser(User.Identity.Name)
UserRolesGrid.DataSource = rolesArray
UserRolesGrid.DataBind()
UserRolesGrid.Columns(0).HeaderText = "Roles for " & User.Identity.Name
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: View User Roles</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>View User Roles</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table border="0" cellspacing="4">
<tr>
<td valign="top"><asp:GridView runat="server" CellPadding="4" id="UserRolesGrid"
AutoGenerateColumns="false" Gridlines="None"
CellSpacing="0" >
<HeaderStyle BackColor="navy" ForeColor="white" />
<Columns>
<asp:TemplateField HeaderText="Roles" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td>
</tr>
</table>
</form>
</body>
</html>
Remarques
La IsUserInRole méthode est appelée par la Roles classe et la IsInRole méthode de la User propriété pour déterminer si un utilisateur se trouve dans un groupe Windows. Vous pouvez appeler la IsUserInRole méthode uniquement pour l’utilisateur actuellement connecté, comme identifié par la variable de serveur LOGON_USER. L’utilisateur connecté actuel doit être un utilisateur authentifié Windows. Pour plus d’informations sur l’authentification ASP.NET et Windows, consultez Authentification ASP.NET.