WindowsTokenRoleProvider.IsUserInRole Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan nilai yang menunjukkan apakah pengguna yang ditentukan berada dalam peran Windows bawaan yang ditentukan.
Overload
IsUserInRole(String, WindowsBuiltInRole) |
Mendapatkan nilai yang menunjukkan apakah pengguna yang ditentukan berada dalam peran Windows bawaan yang ditentukan. |
IsUserInRole(String, String) |
Mendapatkan nilai yang menunjukkan apakah pengguna yang ditentukan berada dalam grup Windows yang ditentukan. |
IsUserInRole(String, WindowsBuiltInRole)
Mendapatkan nilai yang menunjukkan apakah pengguna yang ditentukan berada dalam peran Windows bawaan yang ditentukan.
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
Nama pengguna yang akan dicari dalam formulir DOMAIN\nama pengguna.
- role
- WindowsBuiltInRole
Peran Windows untuk dicari.
Mengembalikan
true
jika pengguna yang ditentukan berada dalam peran Windows yang ditentukan; jika tidak, false
.
Pengecualian
username
adalah null
.
Pengguna yang saat ini mengeksekusi tidak memiliki lampiran terautentikasi WindowsIdentity ke User. Untuk skenario non-HTTP, pengguna yang saat ini menjalankan tidak memiliki autentikasi WindowsIdentity yang dilampirkan ke CurrentPrincipal.
-atau-
username
tidak cocok dengan Name dari saat ini WindowsIdentity.
Contoh
Contoh kode berikut secara terprogram memeriksa apakah pengguna yang saat ini masuk berada dalam peran Administrator sebelum memungkinkan pengguna untuk melihat informasi peran untuk aplikasi. Untuk contoh file Web.config yang memungkinkan manajemen peran, lihat 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>
Keterangan
Metode ini IsUserInRole memungkinkan Anda untuk memeriksa apakah pengguna berada dalam salah satu peran Windows umum yang dijelaskan oleh WindowsBuiltInRole enumerasi. Metode ini berguna untuk aplikasi yang dilokalkan ke dalam beberapa bahasa. Kelebihan beban IsUserInRole metode ini bukan bagian RoleProvider dari kelas dasar dan hanya dapat diakses dengan mentransmisikan Provider properti Roles kelas sebagai WindowsTokenRoleProvider jenis .
Anda hanya dapat memanggil IsUserInRole metode untuk pengguna yang saat ini masuk, seperti yang diidentifikasi oleh variabel server LOGON_USER. Jika nilai yang disediakan dalam username
parameter bukan nama pengguna yang saat ini masuk, maka HttpException akan dilemparkan.
IsUserInRole metode hanya dapat dipanggil untuk pengguna yang saat ini masuk yang diidentifikasi oleh variabel server LOGON_USER. Pengguna yang masuk saat ini harus merupakan pengguna terautentikasi Windows. Untuk informasi selengkapnya tentang autentikasi ASP.NET dan Windows, lihat Autentikasi ASP.NET.
Lihat juga
Berlaku untuk
IsUserInRole(String, String)
Mendapatkan nilai yang menunjukkan apakah pengguna yang ditentukan berada dalam grup Windows yang ditentukan.
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
Nama pengguna yang akan dicari dalam formulir DOMAIN\nama pengguna.
- roleName
- String
Grup Windows untuk mencari dalam formulir DOMAIN\rolename.
Mengembalikan
true
jika nama pengguna yang ditentukan berada dalam grup Windows yang ditentukan; jika tidak, false
.
Pengecualian
Pengguna yang saat ini mengeksekusi tidak memiliki lampiran terautentikasi WindowsIdentity ke User. Untuk skenario non-HTTP, pengguna yang saat ini menjalankan tidak memiliki autentikasi WindowsIdentity yang dilampirkan ke CurrentPrincipal.
-atau-
username
tidak cocok dengan Name dari saat ini WindowsIdentity.
-atau-
Kegagalan terjadi saat mengambil informasi grup Windows pengguna.
Contoh
Contoh kode berikut secara terprogram memeriksa apakah pengguna yang saat ini masuk berada dalam peran Administrator sebelum memungkinkan pengguna untuk melihat informasi peran untuk aplikasi. Untuk contoh file Web.config yang memungkinkan manajemen peran, lihat 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>
Keterangan
Metode IsUserInRole ini dipanggil oleh Roles kelas dan IsInRole metode User properti untuk menentukan apakah pengguna berada dalam grup Windows. Anda hanya dapat memanggil IsUserInRole metode untuk pengguna yang saat ini masuk, seperti yang diidentifikasi oleh variabel server LOGON_USER. Pengguna yang masuk saat ini harus merupakan pengguna terautentikasi Windows. Untuk informasi selengkapnya tentang autentikasi ASP.NET dan Windows, lihat Autentikasi ASP.NET.