WebPart.AuthorizationFilter Egenskap

Definition

Hämtar eller anger en godtycklig sträng för att avgöra om en WebPart kontroll har behörighet att läggas till på en sida.

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

Egenskapsvärde

En sträng som tillåter att en kontroll läggs till på en webbsida. Standardvärdet är en tom sträng ("").

Attribut

Exempel

Följande kodexempel visar hur egenskapen används AuthorizationFilter . Den visar hur du anger en anpassad metodhanterare för AuthorizeWebPart händelsen, så att hanteraren kan ange anpassad filtreringskod för OnAuthorizeWebPart metoden. Det här exemplet är ett vanligt sätt för en sidutvecklare att tillhandahålla ett filtreringsscenario och auktorisering av WebPart kontroller som ska läggas till på en sida.

Observera att elementet <asp:webpartmanager> har OnAuthorizeWebPart attributet med namnet på den händelsehanterare som tilldelats i webbsidekoden. Den här metoden kontrollerar om kontrollerna på sidan har sitt AuthorizationFilter egenskapsvärde inställt på admin, och i så fall returnerar true, vilket innebär att de kommer att auktoriseras och läggas till på sidan.

Note

Observera att kontroller som inte har något värde som tilldelats egenskapen också läggs till AuthorizationFilter , eftersom de antas inte vara en del av ett filtreringsscenario. Detta skulle vara en vanlig metod i ett filtreringsscenario: vissa kontroller skulle filtreras och andra skulle inte vara det, eftersom de antas vara tillgängliga för alla användare.

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

Eftersom det inte går att konfigurera användare i roller i det här avsnittet kontrollerar det här kodexemplet inte användarroller i filtreringen. Scenariot med filtreringskontroller enligt användarroller är dock sannolikt en av de vanligaste användningsområdena för den här filtreringsfunktionen. Om du har roller på webbplatsen och vill kontrollera användarroller i den här metoden för att filtrera kontroller, skulle metoden likna följande kodblock (jämfört med den enklare metoden i föregående kodexempel som inte använder roller).

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

Kommentarer

Kontrolluppsättningen webbdelar implementerar inte något standardbeteende för AuthorizationFilter egenskapen. Egenskapen tillhandahålls dock så att du kan tilldela ett godtyckligt strängvärde till en anpassad WebPart kontroll. Den WebPartManager här egenskapen kan kontrolleras av kontrollen under händelsen AuthorizeWebPart för att avgöra om kontrollen kan läggas till på sidan.

I vissa fall kan egenskapen AuthorizationFilter användas med funktionen ASP.NET rollhanterare, så att om en användare har en viss roll och om strängvärdet för egenskapen AuthorizationFilter uppfyller vissa villkor som angetts av utvecklaren kan kontrollen läggas till. Med den här metoden kan utvecklare skapa anpassade vyer av en sida baserat på en kombination av roller och andra auktoriseringsvillkor som de anger.

Den här egenskapen kan inte anges med teman eller formatmallsteman. Mer information finns i ThemeableAttribute and ASP.NET Themes and Skins.

Anpassningsomfånget för den här egenskapen är inställt på Shared och kan endast ändras av behöriga användare. Mer information finns i PersonalizableAttributeoch Översikt över anpassning av webbdelar.

Anteckningar till arvingar

Om du vill använda den här egenskapen måste du skapa en anpassad WebPartManager kontroll och åsidosätta antingen dess OnAuthorizeWebPart(WebPartAuthorizationEventArgs) metod eller dess IsAuthorized(WebPart) metod för att hantera kontrollen av AuthorizationFilter egenskapen.

Gäller för

Se även