Freigeben über


WindowsTokenRoleProvider.IsUserInRole Methode

Definition

Ruft einen Wert ab, der angibt, ob sich der angegebene Benutzer in der angegebenen integrierten Windows-Rolle befindet.

Überlädt

Name Beschreibung
IsUserInRole(String, WindowsBuiltInRole)

Ruft einen Wert ab, der angibt, ob sich der angegebene Benutzer in der angegebenen integrierten Windows-Rolle befindet.

IsUserInRole(String, String)

Ruft einen Wert ab, der angibt, ob sich der angegebene Benutzer in der angegebenen Windows-Gruppe befindet.

IsUserInRole(String, WindowsBuiltInRole)

Ruft einen Wert ab, der angibt, ob sich der angegebene Benutzer in der angegebenen integrierten Windows-Rolle befindet.

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

Parameter

username
String

Der Benutzername, nach dem im Formular DOMÄNE\Benutzername gesucht werden soll.

role
WindowsBuiltInRole

Die Windows-Rolle, in der gesucht werden soll.

Gibt zurück

truewenn sich der angegebene Benutzer in der angegebenen Windows-Rolle befindet; andernfalls . false

Ausnahmen

username ist null.

Der aktuell ausgeführte Benutzer verfügt nicht über eine authentifizierte WindowsIdentity Anlage User. Für Nicht-HTTP-Szenarien verfügt der derzeit ausgeführte Benutzer nicht über einen authentifizierten WindowsIdentity Anhang CurrentPrincipal.

- oder -

username stimmt nicht mit dem Name aktuellen WindowsIdentityüberein.

Beispiele

Im folgenden Codebeispiel wird programmgesteuert überprüft, ob sich der aktuell angemeldete Benutzer in der Rolle "Administratoren" befindet, bevor der Benutzer Rolleninformationen für die Anwendung anzeigen kann. Ein Beispiel für eine Web.config Datei, die die Rollenverwaltung ermöglicht, finden Sie unter 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>

Hinweise

Mit der IsUserInRole Methode können Sie überprüfen, ob sich ein Benutzer in einer der gängigen Windows-Rollen befindet, die von der WindowsBuiltInRole Enumeration beschrieben werden. Diese Methode ist nützlich für Anwendungen, die in mehrere Sprachen lokalisiert sind. Diese Überladung der IsUserInRole Methode ist nicht Teil der RoleProvider Basisklasse und kann nur durch Umwandlung der Provider Eigenschaft der Roles Klasse als WindowsTokenRoleProvider Typ aufgerufen werden.

Sie können die IsUserInRole Methode nur für den aktuell angemeldeten Benutzer aufrufen, wie durch die LOGON_USER Servervariable identifiziert. Wenn der im username Parameter angegebene Wert nicht der Name des aktuell angemeldeten Benutzers ist, wird ein HttpException Fehler ausgelöst.

IsUserInRole die Methode kann nur für den aktuell angemeldeten Benutzer aufgerufen werden, der von der servervariablen LOGON_USER identifiziert wird. Der aktuelle angemeldete Benutzer muss ein authentifizierter Windows-Benutzer sein. Weitere Informationen zur ASP.NET- und Windows-Authentifizierung finden Sie unter ASP.NET Authentifizierung.

Weitere Informationen

Gilt für:

IsUserInRole(String, String)

Ruft einen Wert ab, der angibt, ob sich der angegebene Benutzer in der angegebenen Windows-Gruppe befindet.

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

Parameter

username
String

Der Benutzername, nach dem im Formular DOMÄNE\Benutzername gesucht werden soll.

roleName
String

Die Windows-Gruppe, die im Formular DOMÄNE\rolename durchsucht werden soll.

Gibt zurück

truewenn sich der angegebene Benutzername in der angegebenen Windows-Gruppe befindet; andernfalls . false

Ausnahmen

username ist null.

- oder -

roleName ist null.

Der aktuell ausgeführte Benutzer verfügt nicht über eine authentifizierte WindowsIdentity Anlage User. Für Nicht-HTTP-Szenarien verfügt der derzeit ausgeführte Benutzer nicht über einen authentifizierten WindowsIdentity Anhang CurrentPrincipal.

- oder -

username stimmt nicht mit dem Name aktuellen WindowsIdentityüberein.

- oder -

Fehler beim Abrufen der Windows-Gruppeninformationen des Benutzers.

Beispiele

Im folgenden Codebeispiel wird programmgesteuert überprüft, ob sich der aktuell angemeldete Benutzer in der Rolle "Administratoren" befindet, bevor der Benutzer Rolleninformationen für die Anwendung anzeigen kann. Ein Beispiel für eine Web.config Datei, die die Rollenverwaltung ermöglicht, finden Sie unter 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>

Hinweise

Die IsUserInRole Methode wird von der Roles Klasse und der IsInRole Methode der User Eigenschaft aufgerufen, um zu bestimmen, ob sich ein Benutzer in einer Windows-Gruppe befindet. Sie können die IsUserInRole Methode nur für den aktuell angemeldeten Benutzer aufrufen, wie durch die LOGON_USER Servervariable identifiziert. Der aktuelle angemeldete Benutzer muss ein authentifizierter Windows-Benutzer sein. Weitere Informationen zur ASP.NET- und Windows-Authentifizierung finden Sie unter ASP.NET Authentifizierung.

Weitere Informationen

Gilt für: