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 控制項授權的一般方式。

在網頁程式碼中,請注意,元素 <asp:webpartmanager> 具有 OnAuthorizeWebPart 指派給它的事件處理常式名稱的屬性。 這個方法會檢查頁面上的控制項是否將其 AuthorizationFilter 屬性值設定為 admin ,如果是,則傳回 true ,這表示它們將會獲得授權並新增至頁面。

注意

請注意,沒有指派給 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>

由於在角色中設定使用者超出本主題的範圍,所以此程式碼範例不會檢查篩選中的使用者角色。 不過,根據使用者角色篩選控制項的案例可能是此篩選功能最常見的用法之一。 如果您的網站上有角色,而且您想要檢查這個方法中的使用者角色來篩選控制項,則方法會類似下列程式碼區塊 (與上述程式碼範例中較簡單的方法,而不使用角色) 。

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 控制項;您可以在控制項的 事件期間 AuthorizeWebPart 檢查 WebPartManager 此屬性,以判斷是否可以將控制項新增至頁面。

在某些情況下, AuthorizationFilter 屬性可能會與 ASP.NET 角色管理員功能搭配使用,因此如果使用者處於特定角色,而且如果屬性的 AuthorizationFilter 字串值符合開發人員所設定的特定條件,則可以新增控制項。 此方法可讓開發人員根據角色和其他指定授權準則的組合,建立頁面的自訂檢視。

這個屬性無法由佈景主題或樣式表主題設定。 如需詳細資訊,請參閱 ThemeableAttributeASP.NET 主題和麵板

此屬性的個人化範圍會設定為 Shared ,而且只能由授權的使用者修改。 如需詳細資訊,請參閱 PersonalizableAttributeWeb 元件個人化概觀

給繼承者的注意事項

若要使用這個屬性,您必須建立自訂 WebPartManager 控制項,並覆寫其 OnAuthorizeWebPart(WebPartAuthorizationEventArgs)IsAuthorized(WebPart) 方法或其 方法來處理屬性的 AuthorizationFilter 檢查。

適用於

另請參閱