Поделиться через


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

Значение свойства

Строка, которая разрешает добавление элемента управления на веб-страницу. Значение по умолчанию — пустая строка ("").

Атрибуты

Примеры

В следующем примере кода показано использование AuthorizationFilter свойства. В нем показано, как задать настраиваемый обработчик метода для AuthorizeWebPart события, чтобы обработчик может предоставить пользовательский код фильтрации для OnAuthorizeWebPart метода. Этот пример является типичным способом для разработчика страницы, чтобы предоставить сценарий фильтрации и авторизацию WebPart элементов управления, добавляемых на страницу.

Обратите внимание, что <asp:webpartmanager> в коде веб-страницы элемент имеет OnAuthorizeWebPart атрибут с именем обработчика событий, назначенного ему. Этот метод проверяет, имеют ли элементы управления на странице значение свойства AuthorizationFilteradminи, если да, возвращается 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;
  }
}

Комментарии

Набор элементов управления веб-частей не реализует поведение по умолчанию для AuthorizationFilter свойства. Однако свойство предоставляется таким образом, чтобы можно было назначить произвольное строковое значение пользовательскому WebPart элементу управления. Это свойство можно проверить WebPartManager элементом управления во время его AuthorizeWebPart события, чтобы определить, можно ли добавить элемент управления на страницу.

В некоторых случаях AuthorizationFilter свойство может использоваться с функцией диспетчера ролей ASP.NET, чтобы, если пользователь находится в определенной роли, и если строковое значение AuthorizationFilter свойства соответствует определенным условиям, заданным разработчиком, можно добавить элемент управления. Этот подход позволяет разработчикам создавать пользовательские представления страницы на основе сочетания ролей и других критериев авторизации, которые они указывают.

Это свойство не может быть задано темами или темами таблицы стилей. Дополнительные сведения см. в статье ThemeableAttributeи ASP.NET темы и скины.

Область персонализации этого свойства задана Shared и может быть изменена только авторизованными пользователями. Дополнительные сведения см. в разделе PersonalizableAttribute " Обзор персонализации веб-частей".

Примечания для тех, кто наследует этот метод

Чтобы использовать это свойство, необходимо создать пользовательский WebPartManager элемент управления и переопределить OnAuthorizeWebPart(WebPartAuthorizationEventArgs) метод или его IsAuthorized(WebPart) метод для обработки проверки свойства AuthorizationFilter .

Применяется к

См. также раздел