WindowsTokenRoleProvider.IsUserInRole Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald die aangeeft of de opgegeven gebruiker zich in de opgegeven ingebouwde Windows rol bevindt.
Overloads
| Name | Description |
|---|---|
| IsUserInRole(String, WindowsBuiltInRole) |
Hiermee wordt een waarde opgehaald die aangeeft of de opgegeven gebruiker zich in de opgegeven ingebouwde Windows rol bevindt. |
| IsUserInRole(String, String) |
Hiermee wordt een waarde opgehaald die aangeeft of de opgegeven gebruiker zich in de opgegeven Windows groep bevindt. |
IsUserInRole(String, WindowsBuiltInRole)
Hiermee wordt een waarde opgehaald die aangeeft of de opgegeven gebruiker zich in de opgegeven ingebouwde Windows rol bevindt.
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
Parameters
- username
- String
De gebruikersnaam die moet worden gezocht in het formulier DOMEIN\gebruikersnaam.
- role
- WindowsBuiltInRole
De Windows rol waarin moet worden gezocht.
Retouren
true als de opgegeven gebruiker de opgegeven Windows rol heeft; anders false.
Uitzonderingen
username is null.
De gebruiker die momenteel wordt uitgevoerd, heeft geen geverifieerde WindowsIdentity koppeling.User Voor niet-HTTP-scenario's heeft de gebruiker die momenteel wordt uitgevoerd, geen geverifieerde WindowsIdentity bijlage.CurrentPrincipal
– of –
username komt niet overeen met de Name huidige WindowsIdentity.
Voorbeelden
In het volgende codevoorbeeld wordt programmatisch gecontroleerd of de momenteel aangemelde gebruiker de rol Administrators heeft voordat de gebruiker rollengegevens voor de toepassing kan weergeven. Zie voor een voorbeeld van een Web.config-bestand dat rolbeheer WindowsTokenRoleProvidermogelijk maakt.
<%@ 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>
Opmerkingen
Met de methode IsUserInRole kunt u controleren of een gebruiker zich in een van de algemene Windows rollen bevindt die worden beschreven door de opsomming WindowsBuiltInRole. Deze methode is handig voor toepassingen die zijn gelokaliseerd in meerdere talen. Deze overbelasting van de IsUserInRole methode maakt geen deel uit van de RoleProvider basisklasse en kan alleen worden geopend door de Provider eigenschap van de Roles klasse als het WindowsTokenRoleProvider type te casten.
U kunt de IsUserInRole methode alleen aanroepen voor de momenteel aangemelde gebruiker, zoals aangegeven door de LOGON_USER servervariabele. Als de waarde die is opgegeven in de username parameter niet de naam is van de momenteel aangemelde gebruiker, wordt er een HttpException gegenereerd.
IsUserInRole de methode kan alleen worden aangeroepen voor de momenteel aangemelde gebruiker die is geïdentificeerd door de LOGON_USER servervariabele. De huidige aangemelde gebruiker moet een Windows geverifieerde gebruiker zijn. Zie ASP.NET Authentication voor meer informatie over ASP.NET en Windows authentication.
Zie ook
Van toepassing op
IsUserInRole(String, String)
Hiermee wordt een waarde opgehaald die aangeeft of de opgegeven gebruiker zich in de opgegeven Windows groep bevindt.
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
Parameters
- username
- String
De gebruikersnaam die moet worden gezocht in het formulier DOMEIN\gebruikersnaam.
- roleName
- String
De Windows groep om te zoeken in het formulier DOMAIN\rolename.
Retouren
true als de opgegeven gebruikersnaam zich in de opgegeven Windows groep bevindt; anders false.
Uitzonderingen
De gebruiker die momenteel wordt uitgevoerd, heeft geen geverifieerde WindowsIdentity koppeling.User Voor niet-HTTP-scenario's heeft de gebruiker die momenteel wordt uitgevoerd, geen geverifieerde WindowsIdentity bijlage.CurrentPrincipal
– of –
username komt niet overeen met de Name huidige WindowsIdentity.
– of –
Er is een fout opgetreden bij het ophalen van de Windows groepsgegevens van de gebruiker.
Voorbeelden
In het volgende codevoorbeeld wordt programmatisch gecontroleerd of de momenteel aangemelde gebruiker de rol Administrators heeft voordat de gebruiker rollengegevens voor de toepassing kan weergeven. Zie voor een voorbeeld van een Web.config-bestand dat rolbeheer WindowsTokenRoleProvidermogelijk maakt.
<%@ 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>
Opmerkingen
De methode IsUserInRole wordt aangeroepen door de klasse Roles en de methode IsInRole van de eigenschap User om te bepalen of een gebruiker zich in een Windows groep bevindt. U kunt de IsUserInRole methode alleen aanroepen voor de momenteel aangemelde gebruiker, zoals aangegeven door de LOGON_USER servervariabele. De huidige aangemelde gebruiker moet een Windows geverifieerde gebruiker zijn. Zie ASP.NET Authentication voor meer informatie over ASP.NET en Windows authentication.