WebPartManager.OnAuthorizeWebPart メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > WebPartManager.OnAuthorizeWebPart メソッドの意味・解説 

WebPartManager.OnAuthorizeWebPart メソッド

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

AuthorizeWebPart イベントを発生させ、イベントのハンドラが存在する場合はそれを呼び出します。

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

Protected Overridable Sub
 OnAuthorizeWebPart ( _
    e As WebPartAuthorizationEventArgs _
)
Dim e As WebPartAuthorizationEventArgs

Me.OnAuthorizeWebPart(e)
protected virtual void OnAuthorizeWebPart (
    WebPartAuthorizationEventArgs e
)
protected:
virtual void OnAuthorizeWebPart (
    WebPartAuthorizationEventArgs^ e
)
protected void OnAuthorizeWebPart (
    WebPartAuthorizationEventArgs e
)
protected function OnAuthorizeWebPart (
    e : WebPartAuthorizationEventArgs
)

パラメータ

e

イベント データを格納している WebPartAuthorizationEventArgs。

解説解説

OnAuthorizeWebPart メソッドは、ページに WebPart コントロールを追加するかどうかの承認をチェックするときに、IsAuthorized メソッドによって呼び出されます。OnAuthorizeWebPart メソッドが呼び出されると、AuthorizeWebPart イベントを発生させ、そのイベントのハンドラ メソッドがある場合は、そのハンドラを呼び出します。

WebPart コントロールを承認するプロセスは、重要な Web パーツ機能です。WebPartManager コントロールによってゾーンに追加されるすべての WebPart コントロールまたはサーバー コントロールは、追加可能かどうかを判断するために承認プロセスを経由します。既定では、ゾーンへのコントロールの追加を防止するフィルタ処理条件は、Web パーツ コントロール セットに用意されていません。ただし、このコントロール セットには、開発者が独自のフィルタ処理条件を作成するのに必要なしくみが用意されています。これらのしくみを使用すると、カスタムのフィルタ処理を作成できます。たとえば、ユーザーが管理者ロールになっている場合はページを表示するときに特定のコントロールをゾーンに追加し、ユーザーがユーザー ロールの場合はこれらのコントロールを追加しないようにする、フィルタを作成できます。

承認プロセスを実行しているときのフィルタ処理コントロールのしくみは、WebPart コントロールの AuthorizationFilter プロパティ、IsAuthorized メソッドと OnAuthorizeWebPart メソッド、および WebPartManager コントロールの AuthorizeWebPart イベントで構成されます。

フィルタ処理を作成するには、基本的に次の 2 つのタスクがあります。最初に、フィルタ処理する各 WebPart コントロールの AuthorizationFilter プロパティに文字列を割り当てます。これらの文字列値は任意ですが、フィルタ処理する条件が含まれている必要があります。たとえば、管理者ユーザーがそのページを表示しているときにのみゾーンに指定のコントロールを追加する場合、このプロパティに admin の文字列値を割り当てることができます。次に、ASP.NET ロール機能を使用して、サイトのすべてのユーザーを、管理者、マネージャ、ユーザーなどのさまざまなロールに追加します。ページを読み込むと、フィルタ処理コードがユーザーのロールをチェックし、それをチェック対象のコントロールの承認フィルタ値と比較して、たとえば、ユーザーが管理者ロールになっていて、コントロールの AuthorizationFilter 値を admin に設定していた場合は、そのコントロールを追加できます。

フィルタ処理を作成する 2 番目の手順では、WebPart コントロールの AuthorizationFilter プロパティ値をチェックするコードを記述し、各コントロールをゾーンに追加する前に、こうしたコントロールを承認するかどうかを判断します。このフィルタ処理コードは 2 つの場所のいずれかに配置できます。最初の場所はページの開発者に適しています。Web ページのサーバー スクリプト コードまたはコード分離ファイルに、AuthorizeWebPart イベントを処理するメソッドを直接作成できます。次のサンプル マークアップ コードに示すように、ページの WebPartManager コントロールのタグに OnAuthorizeWebPart 属性を追加することにより、このメソッドをイベントに関連付けます。

<asp:webpartmanager runat="server" 
   OnAuthorizeWebPart="manager1_AuthorizeWebPart" />

すべてのカスタム メソッドは、フィルタ処理条件に対して各 WebPart コントロールをチェックし、その結果に基づいて、WebPartAuthorizationEventArgs オブジェクトの IsAuthorized プロパティに、WebPart コントロールを追加できるかどうかを示すブール値を割り当てる必要があります。「例」のコードにこの方法が示されています。

フィルタ処理コードを配置する 2 つ目のオプションでは、WebPartManager クラスから継承し、フィルタ条件をチェックするメソッドをオーバーライドします。オーバーライドできるメソッドは、WebPartManager.IsAuthorized(Type,String,String,Boolean) メソッドまたは OnAuthorizeWebPart メソッドのいずれかです。どちらのメソッドも機能しますが、ほとんどの場合 IsAuthorized メソッドのオーバーライドをお勧めします。これは、このメソッドが承認プロセス全体をプログラムでより詳細に制御できるのに対し、OnAuthorizeWebPart メソッドは、イベントを発生させてハンドラをチェックする 1 つの特定のタスクのみを実行するためです。IsAuthorized メソッドをオーバーライドするカスタム WebPartManager クラスのコード例については、このメソッドの WebPartManager.IsAuthorized(Type,String,String,Boolean) オーバーロードのトピックを参照してください。

使用例使用例

AuthorizeWebPart イベントのカスタム イベント ハンドラが、OnAuthorizeWebPart メソッドのカスタムのフィルタ処理コードを提供できるように設定する方法を次のコード例に示します。この例は、ページに追加される WebPart コントロールのフィルタ処理機能および承認機能を、ページの開発者がどのように用意するのかについて代表的な方法を示します。

Web ページで、<asp:webpartmanager> 要素は、イベント ハンドラの名前が割り当てられた OnAuthorizeWebPart 属性を持っています。このメソッドは、ページ上の各コントロールが admin に設定された AuthorizationFilter プロパティ値を持っているかどうかをチェックし、持っている場合は true を返します。これは、こうしたコントロールが承認され、ページに追加されることを示します。

メモメモ

AuthorizationFilter プロパティに値が割り当てられていないコントロールはフィルタ処理の対象外と見なされるため、同様に追加されます。これは、フィルタ処理における共通の方法です。フィルタ処理されるコントロールもあれば、フィルタ処理されないコントロールもあります。フィルタ処理されないコントロールが存在するのは、このコントロールが、すべてのユーザーに対して使用可能であると想定されているためです。

<%@ Page Language="vb" %>

<script runat="server">
  
  Protected Sub mgr1_AuthorizeWebPart(ByVal
 sender As Object, _
    ByVal e As WebPartAuthorizationEventArgs)
    
    If Not String.IsNullOrEmpty(e.AuthorizationFilter)
 Then
      If e.AuthorizationFilter = "user"
 Then
        e.IsAuthorized = True
      Else
        e.IsAuthorized = False
      End If
    End If

  End Sub
</script>

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr1" runat="server"
 
        OnAuthorizeWebPart="mgr1_AuthorizeWebPart"
 />
      <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"
            Title="Filter Test"
            AuthorizationFilter="admin" />
          <asp:Calendar ID="Calendar1" runat="server"
 
            Title="My Calendar"/>
        </ZoneTemplate>
      </asp:WebPartZone>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>

<script runat="server">
  
  protected void mgr1_AuthorizeWebPart(object
 sender, 
    WebPartAuthorizationEventArgs e)
  {
    if (!String.IsNullOrEmpty(e.AuthorizationFilter))
    {
      if (e.AuthorizationFilter == "user")
        e.IsAuthorized = true;
      else
        e.IsAuthorized = false;
    }
  }
  
</script>

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr1" runat="server"
        OnAuthorizeWebPart="mgr1_AuthorizeWebPart" />
      <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"
            Title="Filter Test"
            AuthorizationFilter="admin" />
          <asp:Calendar ID="Calendar1" runat="server" 
            Title="My Calendar"/>
        </ZoneTemplate>
      </asp:WebPartZone>
    </div>
    </form>
</body>
</html>

ユーザーへのロールの設定はこのトピックの範囲外のため、このコード例ではフィルタ処理でユーザー ロールのチェックを行いません。ただし、ユーザー ロールに従ったコントロールのフィルタ処理は、多くの場合このフィルタ処理において最も一般的に使用される機能の 1 つになります。サイト上でロールを使用していて、この方法でユーザー ロールをチェックしてコントロールをフィルタ処理する場合、その方法は次のようなコード ブロックになります (これに対して、上のコード例のような簡単な方法では、ユーザー ロールを使用しません)。

[Visual Basic]

Protected Sub WebPartManager1_AuthorizeWebPart(ByVal sender _
  As Object, ByVal e As WebPartAuthorizationEventArgs)

  If String.IsNullOrEmpty(e.AuthorizationFilter) Then
    If Roles.IsUserInRole(Page.User.Identity.Name, _
      e.AuthorizationFilter) Then

      e.IsAuthorized = True
    Else
      e.IsAuthorized = False
    End If
  End If

End Sub

[C#]

protected void mgr1_AuthorizeWebPart(object sender, 
  WebPartAuthorizationEventArgs e)
{
  if (!String.IsNullOrEmpty(e.AuthorizationFilter))
  {
    if(Roles.IsUserInRole(Page.User.Identity.Name, e.authorizationFilter))
      e.IsAuthorized = true;
    else
      e.IsAuthorized = false;
  }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WebPartManager クラス
WebPartManager メンバ
System.Web.UI.WebControls.WebParts 名前空間
AuthorizeWebPart
IsAuthorized
その他の技術情報
ASP.NET Web パーツ ページ



英和和英テキスト翻訳

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

辞書ショートカット

すべての辞書の索引

WebPartManager.OnAuthorizeWebPart メソッドのお隣キーワード
検索ランキング

   

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



WebPartManager.OnAuthorizeWebPart メソッドのページの著作権

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

©2026 GRAS Group, Inc.RSS