WindowsTokenRoleProvider.IsUserInRole Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera wartość wskazującą, czy określony użytkownik znajduje się w określonej wbudowanej roli systemu Windows.
Przeciążenia
IsUserInRole(String, WindowsBuiltInRole) |
Pobiera wartość wskazującą, czy określony użytkownik znajduje się w określonej wbudowanej roli systemu Windows. |
IsUserInRole(String, String) |
Pobiera wartość wskazującą, czy określony użytkownik znajduje się w określonej grupie systemu Windows. |
IsUserInRole(String, WindowsBuiltInRole)
Pobiera wartość wskazującą, czy określony użytkownik znajduje się w określonej wbudowanej roli systemu Windows.
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
Parametry
- username
- String
Nazwa użytkownika do wyszukania w formularzu DOMAIN\username.
- role
- WindowsBuiltInRole
Rola systemu Windows do wyszukania.
Zwraca
true
jeśli określony użytkownik znajduje się w określonej roli systemu Windows; w przeciwnym razie , false
.
Wyjątki
username
to null
.
Aktualnie wykonywany użytkownik nie ma uwierzytelnionego WindowsIdentity dołączonego do Userelementu . W przypadku scenariuszy innych niż HTTP aktualnie wykonywany użytkownik nie ma uwierzytelnionego WindowsIdentity dołączonego do CurrentPrincipalprogramu .
-lub-
username
element nie jest zgodny z bieżącym WindowsIdentityelementem Name .
Przykłady
Poniższy przykład kodu programowo sprawdza, czy aktualnie zalogowany użytkownik znajduje się w roli Administratorzy przed zezwoleniem użytkownikowi na wyświetlanie informacji o rolach aplikacji. Przykład pliku Web.config, który umożliwia zarządzanie rolami, zobacz 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>
Uwagi
Metoda IsUserInRole umożliwia sprawdzenie, czy użytkownik znajduje się w jednej z typowych ról systemu Windows opisanych przez wyliczenie WindowsBuiltInRole . Ta metoda jest przydatna w przypadku aplikacji zlokalizowanych w wielu językach. To przeciążenie IsUserInRole metody nie jest częścią RoleProvider klasy bazowej i może być dostępne tylko przez rzutowanie Provider właściwości Roles klasy jako WindowsTokenRoleProvider typu.
Metodę IsUserInRole można wywołać tylko dla aktualnie zalogowanego użytkownika, zidentyfikowanego przez zmienną serwera LOGON_USER. Jeśli wartość podana w parametrze username
nie jest nazwą aktualnie zalogowanego użytkownika, HttpException zostanie zgłoszony.
IsUserInRole metodę można wywołać tylko dla aktualnie zalogowanego użytkownika zidentyfikowanego przez zmienną serwera LOGON_USER. Bieżący zalogowany użytkownik musi być użytkownikiem uwierzytelnianym w systemie Windows. Aby uzyskać więcej informacji na temat ASP.NET i uwierzytelniania systemu Windows, zobacz ASP.NET Authentication (Uwierzytelnianie ASP.NET).
Zobacz też
Dotyczy
IsUserInRole(String, String)
Pobiera wartość wskazującą, czy określony użytkownik znajduje się w określonej grupie systemu Windows.
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
Parametry
- username
- String
Nazwa użytkownika do wyszukania w formularzu DOMAIN\username.
- roleName
- String
Grupa systemu Windows do wyszukania w formularzu DOMAIN\rolename.
Zwraca
true
jeśli określona nazwa użytkownika znajduje się w określonej grupie systemu Windows; w przeciwnym razie , false
.
Wyjątki
Aktualnie wykonywany użytkownik nie ma uwierzytelnionego WindowsIdentity dołączonego do Userelementu . W przypadku scenariuszy innych niż HTTP aktualnie wykonywany użytkownik nie ma uwierzytelnionego WindowsIdentity dołączonego do CurrentPrincipalprogramu .
-lub-
username
element nie jest zgodny z bieżącym WindowsIdentityelementem Name .
-lub-
Wystąpił błąd podczas pobierania informacji o grupie systemu Windows użytkownika.
Przykłady
Poniższy przykład kodu programowo sprawdza, czy aktualnie zalogowany użytkownik znajduje się w roli Administratorzy przed zezwoleniem użytkownikowi na wyświetlanie informacji o rolach aplikacji. Przykład pliku Web.config, który umożliwia zarządzanie rolami, zobacz 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>
Uwagi
Metoda IsUserInRole jest wywoływana przez klasę Roles i IsInRole metodę User właściwości w celu określenia, czy użytkownik znajduje się w grupie systemu Windows. Metodę IsUserInRole można wywołać tylko dla aktualnie zalogowanego użytkownika, zidentyfikowanego przez zmienną serwera LOGON_USER. Bieżący zalogowany użytkownik musi być użytkownikiem uwierzytelnianym w systemie Windows. Aby uzyskać więcej informacji na temat ASP.NET i uwierzytelniania systemu Windows, zobacz ASP.NET Authentication (Uwierzytelnianie ASP.NET).