Language

WebPart.AuthorizationFilter プロパティ

定義

WebPart コントロールがページに追加される権限があるかどうかを判断する任意の文字列を取得または設定します。

public:
 virtual property System::String ^ AuthorizationFilter { System::String ^ get(); void set(System::String ^ value); };
[System.Web.UI.Themeable(false)]
[System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)]
public virtual string AuthorizationFilter { get; set; }
[<System.Web.UI.Themeable(false)>]
[<System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)>]
member this.AuthorizationFilter : string with get, set
Public Overridable Property AuthorizationFilter As String

プロパティ値

Web ページに追加するコントロールを承認する文字列。 既定値は空の文字列 ("") です。

属性

例

次のコード例では、 AuthorizationFilter プロパティの使用方法を示します。 AuthorizeWebPart メソッドのカスタム フィルター コードをハンドラーが提供できるように、OnAuthorizeWebPart イベントのカスタム メソッド ハンドラーを設定する方法を示します。 この例は、ページ開発者がフィルター処理シナリオと、ページに追加する WebPart コントロールの承認を提供する一般的な方法です。

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

Note

AuthorizationFilter プロパティに値が割り当てられないコントロールも、フィルター処理シナリオに含まれていないと見なされるため、追加されることに注意してください。 これは、フィルター処理シナリオで一般的なアプローチです。一部のコントロールはフィルター処理され、他のコントロールは、すべてのユーザーが使用できるようになると想定されているため、フィルター処理されません。

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 xmlns="http://www.w3.org/1999/xhtml" >
<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="vb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 xmlns="http://www.w3.org/1999/xhtml" >
<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 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;
  }
}

注釈

Web パーツ コントロール セットでは、 AuthorizationFilter プロパティの既定の動作は実装されません。 ただし、このプロパティは、カスタム WebPart コントロールに任意の文字列値を割り当てることができるように提供されます。このプロパティは、WebPartManager イベント中にAuthorizeWebPart コントロールによってチェックされ、コントロールをページに追加できるかどうかを判断できます。

場合によっては、 AuthorizationFilter プロパティを ASP.NET ロール マネージャー機能と共に使用して、ユーザーが特定のロールを持ち、 AuthorizationFilter プロパティの文字列値が開発者が設定した特定の条件を満たしている場合は、コントロールを追加できます。 この方法を使用すると、開発者は、指定したロールとその他の承認基準の組み合わせに基づいて、ページのカスタム ビューを作成できます。

このプロパティは、テーマまたはスタイル シートのテーマでは設定できません。 詳細については、「テーマとスキンの ThemeableAttribute と ASP.NET」を参照してください。

このプロパティのパーソナル化スコープは Shared に設定され、承認されたユーザーのみが変更できます。 詳細については、「 PersonalizableAttribute と Web パーツのパーソナル化の概要」を参照してください。

注意 (継承者)

このプロパティを使用するには、カスタム WebPartManager コントロールを作成し、 OnAuthorizeWebPart(WebPartAuthorizationEventArgs) メソッドまたはその IsAuthorized(WebPart) メソッドをオーバーライドして、 AuthorizationFilter プロパティのチェックを処理する必要があります。

適用対象

こちらもご覧ください