WebPartManager.OnAuthorizeWebPart(WebPartAuthorizationEventArgs) Yöntem

Tanım

AuthorizeWebPart Olayı oluşturur ve varsa olay için bir işleyici çağırır.

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)

Parametreler

Örnekler

Aşağıdaki kod örneği, işleyicinin AuthorizeWebPart yöntem için özel filtreleme kodu sağlayabilmesi için olay için OnAuthorizeWebPart özel bir olay işleyicisinin nasıl ayarlandığını gösterir. Bu örnek, bir sayfa geliştiricisinin bir filtreleme senaryosu ve sayfaya eklenecek denetimlerin WebPart yetkilendirmesini sağlaması için tipik bir yoldur.

Web sayfasında, öğesinin <asp:webpartmanager> kendisine atanmış olay işleyicisinin adıyla özniteliğine sahip OnAuthorizeWebPart olduğuna dikkat edin. yöntemi, sayfadaki denetimlerin ilgili AuthorizationFilter özellik değerlerinin ve olarak ayarlanıp ayarlanmadığını admin denetler, ayarlıysa döndürür true. Bu, yetkilendirilecekleri ve sayfaya eklenecekleri anlamına gelir.

Not

Özelliğe herhangi bir değer atanmamış denetimlerin AuthorizationFilter de eklendiğini unutmayın, çünkü bunların bir filtreleme senaryosunun parçası olmadığı varsayılır. Bu, bir filtreleme senaryosunda yaygın bir yaklaşım olacaktır: bazı denetimler filtrelenir ve bazıları filtrelenmez, çünkü tüm kullanıcılar için kullanılabilir olduğu varsayılır.

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

Rollerin kullanıcılarını ayarlamak bu konunun kapsamının dışında olduğundan, bu kod örneği filtrelemedeki kullanıcı rollerini denetlemez. Ancak, denetimleri kullanıcı rollerine göre filtreleme senaryosu, bu filtreleme özelliğinin en yaygın kullanımlarından biri olabilir. Sitenizde rolleriniz varsa ve denetimleri filtrelemek için bu yöntemdeki kullanıcı rollerini denetlemek istiyorsanız, yöntem aşağıdaki kod bloğuna benzer (önceki kod örneğinde rolleri kullanmayan daha basit bir yaklaşıma karşılık).

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

Açıklamalar

Bir OnAuthorizeWebPart denetimin bir sayfaya IsAuthorized eklenmesi için yetkilendirme denetlenirken WebPart yöntemi tarafından çağrılır. OnAuthorizeWebPart yöntemi çağrıldığında olayı tetikler AuthorizeWebPart ve olay için bir işleyici yöntemi varsa işleyiciyi çağırır.

Denetimleri yetkilendirme WebPart işlemi önemli bir Web Bölümleri özelliğidir. Denetim tarafından bir bölgeye eklenen her WebPart veya sunucu denetimi, denetimin WebPartManager eklenip eklenemeyeceğini belirlemek için bir yetkilendirme işleminden geçer. Varsayılan olarak, Web Bölümleri denetim kümesi denetimlerin bir bölgeye eklenmesini önlemek için herhangi bir filtreleme ölçütü sağlamaz. Ancak denetim kümesi, geliştiricilerin kendi filtreleme ölçütlerini oluşturması için gerekli mekanizmaları sağlar. Bu mekanizmaları kullanarak özel filtreleme senaryoları oluşturabilirsiniz. Örneğin, bir kullanıcı yönetici rolündeyse, sayfa işlendiğinde belirli denetimlerin bir bölgeye eklenmesini ve kullanıcı bir kullanıcı rolündeyse bu denetimlerin eklenmemesi için bir filtre oluşturabilirsiniz.

Yetkilendirme işlemi sırasında denetimleri filtreleme mekanizmaları denetimler, IsAuthorized ve yöntemleri ve AuthorizeWebPartOnAuthorizeWebPart denetimdeki olay üzerindeki özelliğidir AuthorizationFilterWebPartWebPartManager.

Filtreleme senaryosu oluşturmak için temelde iki görev vardır. İlk olarak, filtrelemek istediğiniz her WebPart denetimin AuthorizationFilter özelliğine dizeler atarsınız. Bu dize değerleri rastgele olabilir, ancak filtrelemek istediğiniz ölçütleri içermelidir. Örneğin, belirli bir denetimin yalnızca bir yönetici kullanıcı sayfayı görüntülüyorsa bir bölgeye eklenmesini istiyorsanız, özelliğine dize değeri admin atayabilirsiniz. Ardından ASP.NET rolleri özelliğini kullanabilir ve sitenizin tüm kullanıcılarını yönetici, yönetici ve kullanıcı gibi çeşitli rollere ekleyebilirsiniz. Bir sayfa yüklenirken, filtreleme kodunuz kullanıcının hangi rolün içinde olduğunu denetler, denetlenen denetimdeki yetkilendirme filtresi değeriyle karşılaştırır ve (örneğin) kullanıcı bir yönetici rolündeyse ve denetimin AuthorizationFilter değerini adminolarak ayarlamışsanız denetim eklenebilir.

Filtreleme senaryosu oluşturmanın ikinci adımı, denetimlerdeki WebPart özellik değerlerini denetlemek ve her denetimin bölgesine eklenmeden AuthorizationFilter önce yetkilendirilip yetkilendirilmediğini belirlemek için kod yazmaktır. Bu filtreleme kodunun yerleştirileceği iki seçenek vardır. İlk seçenek, sayfa geliştiricileri için tercih edilen seçenektir. Olayı doğrudan Web sayfası sunucusu betik kodunda veya kod ayırma dosyasında işlemek AuthorizeWebPart için bir yöntem oluşturabilirsiniz. Aşağıdaki örnek işaretleme kodunda gösterildiği gibi sayfadaki denetimin WebPartManager etiketine özniteliğini ekleyerek OnAuthorizeWebPart yönteminizi olayla ilişkilendirin.

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

Özel yönteminizin tek yapması gereken filtreleme ölçütleri için her WebPart denetimi denetlemek ve ardından sonuçlara göre, denetimin eklenip WebPart eklenemeyeceğini belirtmek için nesnenin WebPartAuthorizationEventArgs özelliğine bir Boole değeri IsAuthorized atamaktır. Örnek bölümündeki kod, bunun nasıl yapılacağını gösterir.

Filtreleme kodunuzu nereye yerleştireceğinize ilişkin ikinci seçenek, sınıfından WebPartManager devralmak ve filtre ölçütlerini denetlemek için bir yöntemi geçersiz kılmaktır. Bunu yapmak için geçersiz kılabileceğiniz iki yöntem yöntemi veya yöntemidir WebPartManager.IsAuthorized(Type, String, String, Boolean)OnAuthorizeWebPart . Her iki yöntem de işe yarasa da, çoğu durumda yöntemi geçersiz kılmak IsAuthorized tercih edilir, çünkü bu yöntem size tüm yetkilendirme işlemi üzerinde daha fazla programlı denetim sağlarken OnAuthorizeWebPart , yöntem olayı tetikleyip işleyiciyi denetlemek için yalnızca bir özel görev yapar. Yöntemini geçersiz kılan özel WebPartManager bir sınıfın IsAuthorized kod örneği için yönteminin WebPartManager.IsAuthorized(Type, String, String, Boolean) aşırı yüklemesine bakın.

Şunlara uygulanır

Ayrıca bkz.