WebPartManager.IsAuthorizedとは? わかりやすく解説

WebPartManager.IsAuthorized メソッド (WebPart)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

ページへのコントロールの追加が承認されているかどうかを判断する最初の手順を実行します。

名前空間: System.Web.UI.WebControls.WebParts
アセンブリ: System.Web (system.web.dll 内)
構文構文

例外例外
例外の種類条件

ArgumentNullException

webPart が null 参照 (Visual Basic では Nothing) です。

解説解説
使用例使用例

コードから IsAuthorized(WebPart) メソッドを呼び出し、ページへのコントロールの追加が承認されるかどうかを判断する方法のコード例を次に示します。

コード例は、次の 3 つの部分から成ります。

このコード例は、IsAuthorized(Type,String,String,Boolean) オーバーロード メソッドをオーバーライドするカスタム WebPartManager コントロールを使用して、AuthorizationFilter プロパティのカスタム ハンドリングを提供します。このコントロールは、プロパティ値に admin があるかどうかチェックし、この値が存在する場合はコントロールを承認します。コントロールが異なる値を持っている場合、そのコントロールは承認されません。このプロパティ値を持っていないコントロールは、フィルタ処理の対象外と見なされるため承認されます。

このコード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。このコード例は、動的コンパイルの方法を使用します。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。

Imports System
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyManagerAuthorize
    Inherits WebPartManager

    Public Overrides Function
 IsAuthorized(ByVal type As Type, _
      ByVal path As String,
 ByVal authorizationFilter As String,
 _
      ByVal isShared As Boolean)
 As Boolean

      If Not String.IsNullOrEmpty(authorizationFilter)
 Then
        If authorizationFilter = "admin"
 Then
          Return True
        Else
          Return False
        End If
      Else
        Return True
      End If

    End Function

  End Class

End Namespace
using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
  public class MyManagerAuthorize : WebPartManager
  {
    public override bool IsAuthorized(Type
 type, string path, string authorizationFilter,
 bool isShared)
    {
      if (!String.IsNullOrEmpty(authorizationFilter))
      {
        if (authorizationFilter == "admin")
          return true;
        else
          return false;
      }
      else
        return true;

    }
  }
}

コード例の 2 番目の部分は、コントロールを除外できるフィルタを作成します。次の Web ページには、<asp:webpartzone> 要素に 3 つの ASP.NET サーバー コントロールが含まれています。最初と 2 番目のコントロールは、それぞれ異なる値が設定された AuthorizationFilter プロパティを持ち、3 番目のコントロールにはプロパティが割り当てられていません。実行時にこの承認値をチェックし、開発者が設定した条件をフィルタが満たす場合は、ページにコントロールを追加できます。また、Page_Load メソッドでは、コードが IsAuthorized(WebPart) メソッドを呼び出し、それぞれのコントロールが承認されるかどうかを判断します。承認される場合は、それぞれのコントロールの ExportMode プロパティを設定します。

<%@ Page Language="vb" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls"
 
    TagPrefix="aspSample"%>


<script runat="server">

  Protected Sub Page_Load(ByVal
 sender As Object, _
    ByVal e As System.EventArgs)
    
    Dim part As WebPart
    For Each part In mgr1.WebParts
      If mgr1.IsAuthorized(part) Then
        part.ExportMode = WebPartExportMode.All
      End If
    Next
  End Sub

</script>

<html  >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"
  />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList 
            ID="BulletedList1" 
            Runat="server"
            DisplayMode="HyperLink" 
            Title="Favorite Links"
            AuthorizationFilter="admin">
            <asp:ListItem Value="http://msdn.microsoft.com">
              MSDN
            </asp:ListItem>
            <asp:ListItem Value="http://www.asp.net">
              ASP.NET
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
              MSN
            </asp:ListItem>
          </asp:BulletedList>
          <asp:Label ID="Label1" runat="server"
 
            Text="Hello World"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Register Namespace="Samples.AspNet.CS.Controls" 
    TagPrefix="aspSample"%>


<script runat="server">
  
  protected void Page_Load(object sender, EventArgs
 e)
  {
    foreach (WebPart part in mgr1.WebParts)
    {
      if (mgr1.IsAuthorized(part))
        part.ExportMode = WebPartExportMode.All;
    }
    
  }
</script>

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"
  />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList 
            ID="BulletedList1" 
            Runat="server"
            DisplayMode="HyperLink" 
            Title="Favorite Links"
            AuthorizationFilter="admin">
            <asp:ListItem Value="http://msdn.microsoft.com">
              MSDN
            </asp:ListItem>
            <asp:ListItem Value="http://www.asp.net">
              ASP.NET
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
              MSN
            </asp:ListItem>
          </asp:BulletedList>
          <asp:Label ID="Label1" runat="server" 
            Text="Hello World"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>

コード例が機能するには、Web.config ファイルに設定を追加して、Web パーツ記述ファイルをエクスポートできるようにする必要があります。このコード例の Web ページと同じディレクトリ内に Web.config ファイルが存在することを確認してください。<system.web> セクション内に、次のマークアップのように、true に設定された enableExport 属性を持つ <webParts> 要素が存在することを確認します。

<webParts enableExport="true">

...

</webParts>

ブラウザにページを読み込んだ後、最初のコントロールが表示されます。これはこのコントロールが、オーバーライドされたメソッドの条件を満たすためです。2 番目のコントロールはフィルタで除外されるため、ページに追加されません。3 番目のコントロールは AuthorizationFilter プロパティが設定されていないため、このコントロールもページに追加されます。いずれかのコントロールのタイトル バーにある動詞メニュー アイコンをクリックすると、それぞれに ExportMode プロパティ値が割り当てられているため、両方をエクスポートできます。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WebPartManager クラス
WebPartManager メンバ
System.Web.UI.WebControls.WebParts 名前空間
WebPart.AuthorizationFilter プロパティ
AuthorizeWebPart
OnAuthorizeWebPart
AuthorizeWebPart
WebPartAuthorizationEventArgs クラス
OnAuthorizeWebPart
その他の技術情報
ASP.NET Web パーツ ページ

WebPartManager.IsAuthorized メソッド (Type, String, String, Boolean)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

ページへのコントロールの追加が承認されているかどうかを判断する最後の手順を実行します。

名前空間: System.Web.UI.WebControls.WebParts
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Overridable Function
 IsAuthorized ( _
    type As Type, _
    path As String, _
    authorizationFilter As String, _
    isShared As Boolean _
) As Boolean
Dim instance As WebPartManager
Dim type As Type
Dim path As String
Dim authorizationFilter As String
Dim isShared As Boolean
Dim returnValue As Boolean

returnValue = instance.IsAuthorized(type, path, authorizationFilter, isShared)
public virtual bool IsAuthorized (
    Type type,
    string path,
    string authorizationFilter,
    bool isShared
)
public:
virtual bool IsAuthorized (
    Type^ type, 
    String^ path, 
    String^ authorizationFilter, 
    bool isShared
)
public boolean IsAuthorized (
    Type type, 
    String path, 
    String authorizationFilter, 
    boolean isShared
)
public function IsAuthorized (
    type : Type, 
    path : String, 
    authorizationFilter : String, 
    isShared : boolean
) : boolean

パラメータ

type

承認されているかどうかの確認の対象となるコントロールの Type。

path

コントロールがユーザー コントロールである場合は、承認の対象となるコントロールのソース ファイルの相対アプリケーション パス。

authorizationFilter

コントロールをページに追加できるかどうかを判断して承認するために使用される、WebPart コントロールの AuthorizationFilter プロパティに割り当てる任意の文字列値。

isShared

承認されるかどうかの確認の対象となるコントロールが共有コントロールである (つまり、アプリケーションの多くのユーザーまたはすべてのユーザーに対して表示され、その IsShared プロパティ値が true に設定されている) かどうかを示します。

戻り値
ページへのコントロールの追加が承認されるかどうかを示すブール値。

例外例外
例外の種類条件

ArgumentNullException

type が null 参照 (Visual Basic では Nothing) です。

ArgumentException

type がユーザー コントロールで、path が null 参照 (Visual Basic では Nothing) または空の文字列 ("") のいずれかです。

または

type がユーザー コントロール以外で、path に値が割り当てられています。

解説解説

IsAuthorized(Type,String,String,Boolean) オーバーロード メソッドは、ページへのコントロールの追加が承認されているかどうかを判断する最後の手順を実行します。このメソッドは、type が有効な型であること、チェック対象のコントロールがユーザー コントロールの場合にのみ path に値が設定されていることを確認します。次に、このメソッドは重大な OnAuthorizeWebPart メソッドを呼び出し、AuthorizeWebPart イベントを発生させます。

継承時の注意 承認をチェックするときに追加の処理を用意する場合、このメソッドは WebPartManager クラスから継承してオーバーライドできます。このメソッドをオーバーライドして authorizationFilter パラメータの特定の値をチェックし、その値に基づいて、コントロールがページに追加されるかどうかを判断するブール値を返します。 また、ページの開発者が承認フィルタをチェックしてカスタム ハンドリングを提供する場合、任意のクラスから継承しなくても、.aspx ページまたは分離コード ファイルのインラインでこれを実行できます。このページには、WebPartManager コントロールの OnAuthorizeWebPart メソッドの代替イベント ハンドラを宣言できます。詳細と例については、OnAuthorizeWebPart メソッドのトピックを参照してください。

使用例使用例

IsAuthorized メソッドをオーバーライドし、ページへのコントロールの追加が承認されるかどうかを判断する方法を次のコード例に示します。

最初の手順では、コントロールを除外できるフィルタを作成します。次の Web ページには、<asp:webpartzone> 要素に 3 つの ASP.NET サーバー コントロールが含まれています。最初と 2 番目のコントロールは、それぞれ異なる値が設定された AuthorizationFilter プロパティを持ち、3 番目のコントロールにはプロパティが割り当てられていません。実行時にこの承認値がチェックされ、開発者が設定した条件をフィルタが満たす場合は、ページにコントロールを追加できます。

<%@ Page Language="vb" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls"
 
    TagPrefix="aspSample"%>


<script runat="server">

  Protected Sub Page_Load(ByVal
 sender As Object, _
    ByVal e As System.EventArgs)
    
    Dim part As WebPart
    For Each part In mgr1.WebParts
      If mgr1.IsAuthorized(part) Then
        part.ExportMode = WebPartExportMode.All
      End If
    Next
  End Sub

</script>

<html  >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"
  />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList 
            ID="BulletedList1" 
            Runat="server"
            DisplayMode="HyperLink" 
            Title="Favorite Links"
            AuthorizationFilter="admin">
            <asp:ListItem Value="http://msdn.microsoft.com">
              MSDN
            </asp:ListItem>
            <asp:ListItem Value="http://www.asp.net">
              ASP.NET
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
              MSN
            </asp:ListItem>
          </asp:BulletedList>
          <asp:Label ID="Label1" runat="server"
 
            Text="Hello World"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Register Namespace="Samples.AspNet.CS.Controls" 
    TagPrefix="aspSample"%>


<script runat="server">
  
  protected void Page_Load(object sender, EventArgs
 e)
  {
    foreach (WebPart part in mgr1.WebParts)
    {
      if (mgr1.IsAuthorized(part))
        part.ExportMode = WebPartExportMode.All;
    }
    
  }
</script>

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"
  />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList 
            ID="BulletedList1" 
            Runat="server"
            DisplayMode="HyperLink" 
            Title="Favorite Links"
            AuthorizationFilter="admin">
            <asp:ListItem Value="http://msdn.microsoft.com">
              MSDN
            </asp:ListItem>
            <asp:ListItem Value="http://www.asp.net">
              ASP.NET
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
              MSN
            </asp:ListItem>
          </asp:BulletedList>
          <asp:Label ID="Label1" runat="server" 
            Text="Hello World"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>

2 番目の手順では、IsAuthorized(Type,String,String,Boolean) メソッドをオーバーライドし、承認フィルタのカスタム ハンドリングを作成します。このコードは、AuthorizationFilter プロパティが値を持っているかどうかを最初にチェックし、割り当てられていないコントロールは自動的に追加されるようにします。コントロールがフィルタを持っている場合、このコードはフィルタ値が admin に等しいときにのみ true を返します。これは、ユーザーのロールに応じて、特定のユーザーに特定のコントロールを表示する場合に使用できる簡単なしくみを示しています。ロールを使用する完全な例はこのトピックの範囲外ですが、現在のユーザーが承認フィルタ値に一致するロールになっているかどうかをチェックできる、このコード例におけるオーバーライドされたメソッドと同じロジックを使用すると、そのユーザーの場合にだけコントロールを追加できます。これにより、一部のユーザーにはすべてのコントロールが表示され、その他のユーザーには選択したコントロールだけが表示されるページを作成できます。ロールを使用してフィルタをチェックする場合のロジックの例を次に示します。

[Visual Basic]

If Roles.IsUserInRole(Page.User.Identity.Name, authorizationFilter) Then
  return True
Else
  return False
End If

[C#]

if(Roles.IsUserInRole(Page.User.Identity.Name, authorizationFilter))
    return true;
else
    return false;

コード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。このコード例は、動的コンパイルの方法を使用します。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。

Imports System
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyManagerAuthorize
    Inherits WebPartManager

    Public Overrides Function
 IsAuthorized(ByVal type As Type, _
      ByVal path As String,
 ByVal authorizationFilter As String,
 _
      ByVal isShared As Boolean)
 As Boolean

      If Not String.IsNullOrEmpty(authorizationFilter)
 Then
        If authorizationFilter = "admin"
 Then
          Return True
        Else
          Return False
        End If
      Else
        Return True
      End If

    End Function

  End Class

End Namespace
using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
  public class MyManagerAuthorize : WebPartManager
  {
    public override bool IsAuthorized(Type
 type, string path, string authorizationFilter,
 bool isShared)
    {
      if (!String.IsNullOrEmpty(authorizationFilter))
      {
        if (authorizationFilter == "admin")
          return true;
        else
          return false;
      }
      else
        return true;

    }
  }
}

ブラウザにページを読み込んだ後、最初のコントロールが表示されます。これはこのコントロールが、オーバーライドされたメソッドの条件を満たすためです。2 番目のコントロールは、そのフィルタ値が除外されるため、ページに追加されません。3 番目のコントロールは AuthorizationFilter プロパティが設定されていないため、このコントロールはページに追加されます。2 番目のコントロールのプロパティ値を最初のコントロールと同じ値に変更し、このページをもう一度実行すると、2 番目のコントロールも追加されます。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WebPartManager クラス
WebPartManager メンバ
System.Web.UI.WebControls.WebParts 名前空間
WebPart.AuthorizationFilter プロパティ
AuthorizeWebPart
OnAuthorizeWebPart
その他の技術情報
ASP.NET Web パーツ ページ

WebPartManager.IsAuthorized メソッド

WebPart コントロールまたはその他のサーバー コントロールをページに追加できるかどうかを判断します。
オーバーロードの一覧オーバーロードの一覧

参照参照

関連項目

WebPartManager クラス
WebPartManager メンバ
System.Web.UI.WebControls.WebParts 名前空間
WebPart.AuthorizationFilter プロパティ
AuthorizeWebPart
OnAuthorizeWebPart
AuthorizeWebPart
WebPartAuthorizationEventArgs クラス
OnAuthorizeWebPart

その他の技術情報

ASP.NET Web パーツ ページ
AuthorizeWebPart WebPartAuthorizationEventArgs OnAuthorizeWebPart



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

カテゴリ一覧

すべての辞書の索引



Weblioのサービス

「WebPartManager.IsAuthorized」の関連用語




WebPartManager.IsAuthorizedのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



WebPartManager.IsAuthorizedのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS