WebPartManager.OnAuthorizeWebPart(WebPartAuthorizationEventArgs) Methode

Definitie

Hiermee wordt de AuthorizeWebPart gebeurtenis gegenereerd en wordt een handler voor de gebeurtenis aangeroepen, indien aanwezig.

protected:
 virtual void OnAuthorizeWebPart(System::Web::UI::WebControls::WebParts::WebPartAuthorizationEventArgs ^ e);
protected virtual void OnAuthorizeWebPart(System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs e);
abstract member OnAuthorizeWebPart : System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs -> unit
override this.OnAuthorizeWebPart : System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs -> unit
Protected Overridable Sub OnAuthorizeWebPart (e As WebPartAuthorizationEventArgs)

Parameters

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een aangepaste gebeurtenis-handler instelt voor de AuthorizeWebPart gebeurtenis, zodat de handler aangepaste filtercode voor de OnAuthorizeWebPart methode kan opgeven. Dit voorbeeld is een typische manier voor een paginaontwikkelaar om een filterscenario en autorisatie van WebPart besturingselementen te bieden die aan een pagina moeten worden toegevoegd.

Op de webpagina ziet u dat het <asp:webpartmanager> element het OnAuthorizeWebPart kenmerk heeft met de naam van de gebeurtenis-handler die eraan is toegewezen. De methode controleert of de besturingselementen op de pagina hun respectieve AuthorizationFilter eigenschapswaarden hebben ingesteld admin op en, indien dat het het volgende is, retourneert true, wat betekent dat ze worden geautoriseerd en toegevoegd aan de pagina.

Note

Houd er rekening mee dat besturingselementen waaraan geen waarde is toegewezen, AuthorizationFilter ook worden toegevoegd, omdat wordt ervan uitgegaan dat ze geen deel uitmaken van een filterscenario. Dit zou een algemene benadering zijn in een filterscenario: sommige besturingselementen zouden worden gefilterd en andere niet, omdat ze vermoedelijk beschikbaar zijn voor alle gebruikers.

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

Omdat het instellen van gebruikers in rollen buiten het bereik van dit onderwerp valt, controleert dit codevoorbeeld geen gebruikersrollen in het filteren. Het scenario voor het filteren van besturingselementen op basis van gebruikersrollen is echter waarschijnlijk een van de meest voorkomende toepassingen van deze filterfunctie. Als u rollen op uw site hebt en u gebruikersrollen in deze methode wilt controleren om besturingselementen te filteren, lijkt de methode op het volgende codeblok (versus de eenvoudigere benadering in het voorgaande codevoorbeeld, die geen rollen gebruikt).

Protected Sub WebPartManager1_AuthorizeWebPart(ByVal sender _
  As Object, ByVal e As WebPartAuthorizationEventArgs)

  If String.IsNullOrEmpty(e.AuthorizationFilter) Then
    If Roles.IsUserInRole(Page.User.Identity.Name, _
      e.AuthorizationFilter) Then

      e.IsAuthorized = True
    Else
      e.IsAuthorized = False
    End If
  End If

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

Opmerkingen

De OnAuthorizeWebPart methode wordt aangeroepen door de IsAuthorized methode wanneer een WebPart besturingselement wordt gecontroleerd op autorisatie om aan een pagina te worden toegevoegd. Wanneer de OnAuthorizeWebPart methode wordt aangeroepen, wordt de AuthorizeWebPart gebeurtenis gegenereerd en als er een handlermethode voor de gebeurtenis is, wordt de handler aangeroepen.

Het proces van het autoriseren WebPart van besturingselementen is een belangrijke functie voor webonderdelen. Elk WebPart of serverbeheer dat door het WebPartManager besturingselement aan een zone wordt toegevoegd, doorloopt een autorisatieproces om te bepalen of het besturingselement kan worden toegevoegd. Standaard bevat de set webonderdelen geen filtercriteria om te voorkomen dat besturingselementen worden toegevoegd aan een zone. De controleset biedt echter wel de mechanismen die ontwikkelaars nodig hebben om hun eigen filtercriteria te maken. Met deze mechanismen kunt u aangepaste filterscenario's maken. U kunt bijvoorbeeld een filter maken zodat, als een gebruiker een beheerdersrol heeft, bepaalde besturingselementen worden toegevoegd aan een zone wanneer de pagina wordt weergegeven en als de gebruiker een gebruikersrol heeft, worden deze besturingselementen niet toegevoegd.

De mechanismen voor het filteren van besturingselementen tijdens het autorisatieproces zijn de AuthorizationFilter eigenschap voor WebPart besturingselementen, de IsAuthorized en OnAuthorizeWebPart methoden en de AuthorizeWebPart gebeurtenis op het WebPartManager besturingselement.

Als u een filterscenario wilt maken, zijn er in feite twee taken. Eerst wijst u tekenreeksen toe aan de AuthorizationFilter eigenschap van elk WebPart besturingselement dat u wilt filteren. Deze tekenreekswaarden kunnen willekeurig zijn, maar moeten de criteria bevatten waarop u wilt filteren. Als u bijvoorbeeld wilt dat een bepaald besturingselement alleen aan een zone wordt toegevoegd als een beheerder de pagina bekijkt, kunt u een tekenreekswaarde van admin de eigenschap toewijzen. Vervolgens kunt u de functie ASP.NET-rollen gebruiken en alle gebruikers van uw site toevoegen aan verschillende rollen, zoals beheerder, manager en gebruiker. Wanneer een pagina wordt geladen, controleert de filtercode in welke rol een gebruiker zich bevindt, vergelijkt u deze met de autorisatiefilterwaarde voor een besturingselement dat wordt gecontroleerd. Als (bijvoorbeeld) de gebruiker een beheerdersrol heeft en u de waarde adminvan AuthorizationFilter het besturingselement hebt ingesteld, kan het besturingselement worden toegevoegd.

De tweede stap bij het maken van een filterscenario is het schrijven van code om de AuthorizationFilter eigenschapswaarden op WebPart besturingselementen te controleren en te bepalen of elk besturingselement is geautoriseerd voordat het wordt toegevoegd aan de zone. Er zijn twee opties voor het plaatsen van deze filtercode. De eerste optie is de voorkeursoptie voor paginaontwikkelaars. U kunt een methode maken om de AuthorizeWebPart gebeurtenis rechtstreeks in de scriptcode van de webpaginaserver of in een codescheidingsbestand af te handelen. Koppel uw methode aan de gebeurtenis door het OnAuthorizeWebPart kenmerk toe te voegen aan de tag voor het WebPartManager besturingselement op de pagina, zoals wordt weergegeven in de volgende voorbeeldcode voor markeringen.

<asp:webpartmanager id="manager1" runat="server"
   OnAuthorizeWebPart="manager1_AuthorizeWebPart" />

U hoeft alleen maar elk WebPart besturingselement te controleren op de filtercriteria en vervolgens op basis van de resultaten een Booleaanse waarde toe te wijzen aan de IsAuthorized eigenschap van het WebPartAuthorizationEventArgs object om aan te geven of het WebPart besturingselement kan worden toegevoegd. De code in de sectie Voorbeeld laat zien hoe u dit doet.

De tweede optie voor het plaatsen van uw filtercode is het overnemen van de WebPartManager klasse en het overschrijven van een methode om de filtercriteria te controleren. De twee methoden die u hiervoor kunt overschrijven, zijn de WebPartManager.IsAuthorized(Type, String, String, Boolean) methode of de OnAuthorizeWebPart methode. Hoewel beide methoden zouden werken, is het in de meeste gevallen beter om de IsAuthorized methode te overschrijven, omdat deze u meer programmatische controle biedt over het hele autorisatieproces, terwijl de OnAuthorizeWebPart methode slechts één specifieke taak uitvoert, namelijk het genereren van de gebeurtenis en het controleren op een handler. Zie de WebPartManager.IsAuthorized(Type, String, String, Boolean) overbelasting van de methode voor een codevoorbeeld van een aangepaste WebPartManager klasse die de IsAuthorized methode overschrijft.

Van toepassing op

Zie ook