WebPartManager.OnAuthorizeWebPart メソッド
アセンブリ: System.Web (system.web.dll 内)

Dim e As WebPartAuthorizationEventArgs Me.OnAuthorizeWebPart(e)

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 つになります。サイト上でロールを使用していて、この方法でユーザー ロールをチェックしてコントロールをフィルタ処理する場合、その方法は次のようなコード ブロックになります (これに対して、上のコード例のような簡単な方法では、ユーザー ロールを使用しません)。
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#]

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からWebPartManager.OnAuthorizeWebPart メソッドを検索する場合は、下記のリンクをクリックしてください。

- WebPartManager.OnAuthorizeWebPart メソッドのページへのリンク