Freigeben über


WindowsTokenRoleProvider.IsUserInRole Methode

Definition

Ruft einen Wert ab, der angibt, ob der angegebene Benutzer die angegebene integrierte Windows-Rolle innehat.

Überlädt

IsUserInRole(String, WindowsBuiltInRole)

Ruft einen Wert ab, der angibt, ob der angegebene Benutzer die angegebene integrierte Windows-Rolle innehat.

IsUserInRole(String, String)

Ruft einen Wert ab, der angibt, ob der angegebene Benutzer der angegebenen Windows-Gruppe angehört.

IsUserInRole(String, WindowsBuiltInRole)

Ruft einen Wert ab, der angibt, ob der angegebene Benutzer die angegebene integrierte Windows-Rolle innehat.

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 zu suchende Benutzername im Format DOMAIN\Benutzername.

role
WindowsBuiltInRole

Die Windows-Rolle, in der gesucht werden soll.

Gibt zurück

true, wenn der angegebene Benutzer die angegebene Windows-Rolle innehat, andernfalls false.

Ausnahmen

username ist null.

Für den gegenwärtig ausgeführten Benutzer ist keine authentifizierte WindowsIdentity an User angefügt. In anderen Szenarien als HTTP-Szenarien ist für den gegenwärtig ausgeführten Benutzer keine authentifizierte WindowsIdentity an CurrentPrincipal angefügt.

- oder -

username stimmt nicht mit dem Name der 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 aktiviert, 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 IsUserInRole der -Methode können Sie überprüfen, ob sich ein Benutzer in einer der allgemeinen Windows-Rollen befindet, die durch die 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 zugegriffen 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 ausgelöst.

IsUserInRole -Methode kann nur für den aktuell angemeldeten Benutzer aufgerufen werden, der von der LOGON_USER Servervariablen identifiziert wird. Der aktuell angemeldete Benutzer muss ein windows-authentifizierter 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 der angegebene Benutzer der angegebenen Windows-Gruppe angehört.

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 zu suchende Benutzername im Format DOMAIN\Benutzername.

roleName
String

Die zu suchende Windows-Gruppe im Format DOMAIN\Rollenname.

Gibt zurück

true, wenn der angegebene Benutzer der angegebenen Windows-Gruppe angehört, andernfalls false.

Ausnahmen

username ist null.

- oder -

roleName ist null.

Für den gegenwärtig ausgeführten Benutzer ist keine authentifizierte WindowsIdentity an User angefügt. In anderen Szenarien als HTTP-Szenarien ist für den gegenwärtig ausgeführten Benutzer keine authentifizierte WindowsIdentity an CurrentPrincipal angefügt.

- oder -

username stimmt nicht mit dem Name der aktuellen WindowsIdentity überein.

- oder -

Beim Abrufen der Windows-Gruppeninformationen des Benutzers ist ein Fehler aufgetreten.

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 aktiviert, 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 aktuell angemeldete Benutzer muss ein windows-authentifizierter Benutzer sein. Weitere Informationen zur ASP.NET- und Windows-Authentifizierung finden Sie unter ASP.NET-Authentifizierung.

Weitere Informationen

Gilt für: