使用英语阅读

通过


WebPart.AuthorizationFilter 属性

定义

获取或设置一个任意字符串,以确定 WebPart 控件是否已被授权添加至页中。

[System.Web.UI.Themeable(false)]
[System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)]
public virtual string AuthorizationFilter { get; set; }

属性值

授权控件可添加至网页的字符串。 默认值为空字符串 ("")。

属性

示例

下面的代码示例演示如何使用 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>

由于在角色中设置用户超出了本主题的范围,因此此代码示例不检查筛选中的用户角色。 但是,根据用户角色筛选控件的方案可能是此筛选功能的最常见用途之一。 如果站点上有角色,并且想要在此方法中检查用户角色以筛选控件,该方法将类似于以下代码块 (,而不是前面代码示例中不使用角色) 的更简单方法。

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 检查。

适用于

产品 版本
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

另请参阅