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 атрибут с именем назначенного ему обработчика событий. Этот метод проверяет, имеет 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;  
  }  
}  

Комментарии

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

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

Значение для данного свойства нельзя задать с помощью тем или тем таблиц стилей. Дополнительные сведения см. в разделах ThemeableAttribute и ASP.NET Темы и обложки.

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

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

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

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

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