WindowsTokenRoleProvider.IsUserInRole Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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.