WindowsTokenRoleProvider.IsUserInRole メソッド

定義

指定したユーザーが指定した組み込みの Windows ロールに存在するかどうかを示す値を取得します。

オーバーロード

IsUserInRole(String, WindowsBuiltInRole)

指定したユーザーが指定した組み込みの Windows ロールに存在するかどうかを示す値を取得します。

IsUserInRole(String, String)

指定したユーザーが指定した Windows グループに存在するかどうかを示す値を取得します。

IsUserInRole(String, WindowsBuiltInRole)

指定したユーザーが指定した組み込みの 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

パラメーター

username
String

DOMAIN\username の形式で検索するユーザー名。

role
WindowsBuiltInRole

検索範囲とする Windows ロール。

戻り値

Boolean

指定した Windows ロール内に指定したユーザーがある場合は true。それ以外の場合は false

例外

usernamenullです。

現在実行しているユーザーは、WindowsIdentity に関連付けられた認証済み User を持っていません。 HTTP 以外の場合、現在実行しているユーザーは、WindowsIdentity に関連付けられた認証済み CurrentPrincipal を持っていません。

  • または -

username は、現在の NameWindowsIdentity に一致しません。

次のコード例では、ユーザーがアプリケーションのロール情報を表示できるようにする前に、現在ログオンしているユーザーが Administrators ロールに属しているかどうかをプログラムで確認します。 ロール管理を有効にするWeb.config ファイルの例については、次を参照してください 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>

注釈

このIsUserInRoleメソッドを使用すると、ユーザーが列挙体でWindowsBuiltInRole説明されている一般的なWindows ロールのいずれかに含まれているかどうかを確認できます。 このメソッドは、複数の言語にローカライズされたアプリケーションに役立ちます。 このメソッドのIsUserInRoleオーバーロードは基底クラスのRoleProvider一部ではなく、クラスのRolesプロパティをProvider型としてWindowsTokenRoleProviderキャストすることによってのみアクセスできます。

このメソッドは IsUserInRole 、LOGON_USER サーバー変数によって識別される、現在ログオンしているユーザーに対してのみ呼び出すことができます。 パラメーターに username 指定された値が現在ログオンしているユーザーの名前でない場合は、スロー HttpException されます。

IsUserInRole メソッドは、LOGON_USER サーバー変数によって識別される現在ログオンしているユーザーに対してのみ呼び出すことができます。 現在ログオンしているユーザーは、Windows認証済みユーザーである必要があります。 ASP.NET とWindows 認証の詳細については、「ASP.NET 認証」を参照してください。

こちらもご覧ください

適用対象

IsUserInRole(String, String)

指定したユーザーが指定した 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

パラメーター

username
String

DOMAIN\username の形式で検索するユーザー名。

roleName
String

DOMAIN\rolename の形式で検索する Windows グループ。

戻り値

Boolean

指定した Windows グループ内に指定したユーザーがある場合は true。それ以外の場合は false

例外

usernamenullです。

または

roleNamenullです。

現在実行しているユーザーは、WindowsIdentity に関連付けられた認証済み User を持っていません。 HTTP 以外の場合、現在実行しているユーザーは、WindowsIdentity に関連付けられた認証済み CurrentPrincipal を持っていません。

  • または -

username は、現在の NameWindowsIdentity に一致しません。

  • または -

ユーザーの Windows グループ情報の取得中にエラーが発生しました。

次のコード例では、ユーザーがアプリケーションのロール情報を表示できるようにする前に、現在ログオンしているユーザーが Administrators ロールに属しているかどうかをプログラムで確認します。 ロール管理を有効にするWeb.config ファイルの例については、次を参照してください 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>

注釈

このIsUserInRoleメソッドは、ユーザーがWindows グループに含まれているかどうかを判断するために、プロパティのクラスとIsInRoleメソッドUserによってRoles呼び出されます。 このメソッドは、LOGON_USER サーバー変数によって識別される、現在ログオンしているユーザーに対してのみ呼び出 IsUserInRole すことができます。 現在ログオンしているユーザーは、Windows認証済みユーザーである必要があります。 ASP.NET とWindows 認証の詳細については、「ASP.NET 認証」を参照してください。

こちらもご覧ください

適用対象