WindowsTokenRoleProvider.IsUserInRole Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un valor que indica si el usuario especificado está incluido en el rol integrado de Windows especificada.
Sobrecargas
IsUserInRole(String, WindowsBuiltInRole) |
Obtiene un valor que indica si el usuario especificado está incluido en el rol integrado de Windows especificada. |
IsUserInRole(String, String) |
Obtiene un valor que indica si el usuario especificado está en el grupo de Windows especificado. |
IsUserInRole(String, WindowsBuiltInRole)
Obtiene un valor que indica si el usuario especificado está incluido en el rol integrado de Windows especificada.
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
Parámetros
- username
- String
El nombre de usuario que se busca en el formato DOMAIN\nombre_usuario.
- role
- WindowsBuiltInRole
El rol de Windows en el que se busca.
Devoluciones
Es true
si el usuario especificado está incluido en el rol de Windows especificado; de lo contrario, es false
.
Excepciones
username
es null
.
El usuario que se ejecuta actualmente no tiene una WindowsIdentity autenticada adjunta a User. Para los escenarios no HTTP, el usuario ejecutado actualmente no tiene una WindowsIdentity autenticada adjuntada a CurrentPrincipal.
o bien
username
no coincide con el valor de Name de la WindowsIdentity actual.
Ejemplos
En el ejemplo de código siguiente se comprueba mediante programación si el usuario que ha iniciado sesión está en el rol Administradores antes de permitir que el usuario vea la información de roles de la aplicación. Para obtener un ejemplo de un archivo Web.config que habilita la administración de roles, consulte 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>
Comentarios
El IsUserInRole método permite comprobar si un usuario está en uno de los roles comunes de Windows descritos por la WindowsBuiltInRole enumeración. Este método es útil para las aplicaciones que se localizan en varios lenguajes. Esta sobrecarga del IsUserInRole método no forma parte de la RoleProvider clase base y solo se puede tener acceso mediante la conversión de la Provider propiedad de la Roles clase como tipo WindowsTokenRoleProvider .
Solo puede llamar al IsUserInRole método para el usuario que ha iniciado sesión actualmente, tal como lo identifica la variable de servidor LOGON_USER. Si el valor proporcionado en el username
parámetro no es el nombre del usuario que ha iniciado sesión actualmente, se produce una HttpException excepción .
IsUserInRole solo se puede llamar al método para el usuario que ha iniciado sesión actualmente identificado por la variable de servidor LOGON_USER. El usuario que ha iniciado sesión actual debe ser un usuario autenticado de Windows. Para obtener más información sobre ASP.NET y la autenticación de Windows, consulte autenticación de ASP.NET.
Consulte también
Se aplica a
IsUserInRole(String, String)
Obtiene un valor que indica si el usuario especificado está en el grupo de Windows especificado.
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
Parámetros
- username
- String
El nombre de usuario que se busca en el formato DOMAIN\nombre_usuario.
- roleName
- String
El grupo de Windows que se busca en el formato DOMAIN\nombre_función.
Devoluciones
Es true
si el nombre de usuario especificado está incluido en el grupo de Windows especificado; de lo contrario, es false
.
Excepciones
El usuario que se ejecuta actualmente no tiene una WindowsIdentity autenticada adjunta a User. Para los escenarios no HTTP, el usuario ejecutado actualmente no tiene una WindowsIdentity autenticada adjuntada a CurrentPrincipal.
o bien
username
no coincide con el valor de Name de la WindowsIdentity actual.
o bien
Error al recuperar la información de grupos de Windows del usuario.
Ejemplos
En el ejemplo de código siguiente se comprueba mediante programación si el usuario que ha iniciado sesión está en el rol Administradores antes de permitir que el usuario vea la información de roles de la aplicación. Para obtener un ejemplo de un archivo Web.config que habilita la administración de roles, consulte 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>
Comentarios
La IsUserInRole clase llama Roles al método y al IsInRole método de la User propiedad para determinar si un usuario está en un grupo de Windows. Solo puede llamar al IsUserInRole método para el usuario que ha iniciado sesión actualmente, tal como lo identifica la variable de servidor LOGON_USER. El usuario que ha iniciado sesión actual debe ser un usuario autenticado de Windows. Para obtener más información sobre ASP.NET y la autenticación de Windows, consulte autenticación de ASP.NET.