WebPartManager.OnAuthorizeWebPart(WebPartAuthorizationEventArgs) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
WebPartAuthorizationEventArgs Olay verilerini içeren bir.
Ö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 admin
olarak 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.