WebPart.AuthorizationFilter Właściwość

Definicja

Pobiera lub ustawia dowolny ciąg w celu określenia, czy kontrolka WebPart jest autoryzowana do dodania do strony.

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

Wartość właściwości

Ciąg, który autoryzuje kontrolkę do dodania do strony sieci Web. Wartością domyślną jest ciąg pusty ("").

Atrybuty

Przykłady

W poniższym przykładzie kodu pokazano użycie AuthorizationFilter właściwości . Pokazano w nim, jak ustawić niestandardową procedurę obsługi metod dla AuthorizeWebPart zdarzenia, aby program obsługi mógł udostępnić niestandardowy kod filtrowania dla OnAuthorizeWebPart metody . Ten przykład jest typowym sposobem, w jaki deweloper strony zapewnia scenariusz filtrowania i autoryzację WebPart kontrolek do dodania do strony.

W kodzie strony sieci Web zwróć uwagę, że <asp:webpartmanager> element ma OnAuthorizeWebPart atrybut z przypisaną nazwą programu obsługi zdarzeń. Ta metoda sprawdza, czy kontrolki na stronie mają ustawioną AuthorizationFilteradminwartość właściwości , a jeśli tak, zwraca truewartość , co oznacza, że zostaną autoryzowane i dodane do strony.

Uwaga

Należy pamiętać, że kontrolki, które nie mają żadnej wartości przypisanej AuthorizationFilter do właściwości, są również dodawane, ponieważ zakłada się, że nie są częścią scenariusza filtrowania. Jest to typowe podejście w scenariuszu filtrowania: niektóre kontrolki byłyby filtrowane, a inne nie, ponieważ są one prawdopodobnie dostępne dla wszystkich użytkowników.

<%@ 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>

Ponieważ konfigurowanie użytkowników w rolach wykracza poza zakres tego tematu, ten przykład kodu nie sprawdza ról użytkowników w filtrowaniu. Jednak scenariusz filtrowania kontrolek zgodnie z rolami użytkowników może być jednym z najczęstszych zastosowań tej funkcji filtrowania. Jeśli masz role w witrynie i chcesz sprawdzić role użytkowników w tej metodzie w celu filtrowania kontrolek, metoda będzie przypominać następujący blok kodu (w porównaniu z prostszą metodą w poprzednim przykładzie kodu, który nie używa ról).

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;  
  }  
}  

Uwagi

Zestaw kontrolek składników Web Part nie implementuje żadnego domyślnego AuthorizationFilter zachowania dla właściwości. Właściwość jest jednak udostępniana w taki sposób, aby można było przypisać dowolną wartość ciągu do kontrolki niestandardowej WebPart . Tę właściwość można sprawdzić za pomocą WebPartManager kontrolki podczas jej AuthorizeWebPart zdarzenia, aby określić, czy kontrolkę można dodać do strony.

W niektórych przypadkach AuthorizationFilter właściwość może być używana z funkcją menedżera ról ASP.NET, tak aby jeśli użytkownik znajduje się w określonej roli, a jeśli wartość AuthorizationFilter ciągu właściwości spełnia określone warunki określone przez dewelopera, można dodać kontrolkę. Takie podejście umożliwia deweloperom tworzenie niestandardowych widoków strony na podstawie kombinacji ról i innych określonych kryteriów autoryzacji.

Tej właściwości nie można ustawić za pomocą motywów ani motywów arkusza stylów. Aby uzyskać więcej informacji, zobacz ThemeableAttributei ASP.NET Motywy i skórki.

Zakres personalizacji tej właściwości jest ustawiony na Shared i może być modyfikowany tylko przez autoryzowanych użytkowników. Aby uzyskać więcej informacji, zobacz PersonalizableAttribute i Web Part Personalization Overview (Omówienie personalizacji składników Web Part).

Uwagi dotyczące dziedziczenia

Aby użyć tej właściwości, należy utworzyć kontrolkę niestandardową WebPartManager i zastąpić jej OnAuthorizeWebPart(WebPartAuthorizationEventArgs) metodę lub jej IsAuthorized(WebPart) metodę do obsługi sprawdzania AuthorizationFilter właściwości.

Dotyczy

Zobacz też