Bagikan melalui


WindowsTokenRoleProvider.IsUserInRole Metode

Definisi

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

usernameadalah 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

usernameadalah null.

-atau-

roleNameadalah 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.

-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.

Lihat juga

Berlaku untuk