Share via


WebPartManager.IsAuthorized Yöntem

Tanım

Sayfaya bir veya başka bir WebPart sunucu denetiminin eklenip eklenemeyeceğini belirler.

Aşırı Yüklemeler

IsAuthorized(WebPart)

Denetimin sayfaya eklenme yetkisi olup olmadığını belirlemeye yönelik ilk adımları yürütür.

IsAuthorized(Type, String, String, Boolean)

Denetimin sayfaya ekleme yetkisi olup olmadığını belirlemeye yönelik son adımları yürütür.

Açıklamalar

Web Bölümleri özelliğinin esnekliğinin bir parçası, çalışma zamanında Web sayfalarına sunucu denetimleri ekleyebilme özelliğidir. Bir sunucu denetiminin (özel denetim, özel WebPart sunucu denetimi, kullanıcı denetimi veya ASP.NET denetimi) eklenebileceği bir dizi yaygın senaryo vardır.

Aşağıdaki yaygın senaryolarda, Web Bölümleri denetim kümesi bir sayfaya sunucu denetimleri eklemeyi dener ve IsAuthorized bunları yetkilendirmek için yöntemi çağrılır:

  • Bir bölge içindeki WebPartZoneBase Bir Web sayfasının işaretlemesine bildirilerek bir sunucu denetimi eklendiğinde.

  • Bir sunucu denetimi bir bölgeye program aracılığıyla eklendiğinde.

  • Bir kullanıcı bir sunucu denetimini denetimler kataloğuna aktardığında.

  • Kişiselleştirme veri deposundan mevcut bir sunucu denetimi yüklendiğinde.

  • Bir sunucu denetimi, bir DeclarativeCatalogPart sunucu denetimleri kataloğunda kullanılabilir hale getirmek için denetime eklendiğinde.

Denetimlerin eklendiği her senaryoda, bir denetimin IsAuthorized eklenmesine izin vermek için tüm yetkilendirme ölçütlerinin karşılandığından emin olmak için yöntemi çağrılır. Bir denetim yetkilendirildiğinde, filtreleme senaryosu olmadığında olduğu gibi normal şekilde eklenir. Denetim yetkilendirilmediğinde, Web Bölümleri denetim kümesi bağlama bağlı olarak çeşitli şekillerde yanıt verebilir. Denetim kümesi sessizce yetkisiz bir bölüm ekleyemez (kullanıcıyı bilgilendirmeye gerek yoksa), bir hata iletisi görüntüleyebilir veya sınıfın UnauthorizedWebPart bir örneğini yer tutucu olarak ekleyebilir. Bu yer tutucu nesne sayfada görünmez, ancak yetkisiz bir denetimin dışlandığını belirtmek için sayfa kaynak kodunda görünür.

Bir denetimin yetkilendirilip yetkilendirilmediğini belirleyen, yetkilendirme filtresidir. Yetkilendirme filtresi, Web Bölümleri denetim kümesinde bulunan ve geliştiricilerin belirtilen ölçütlere uymayan denetimleri sayfadan dışlamalarına olanak tanıyan bir özelliktir.

Filtreleme senaryosu oluşturmak için geliştiricilerin iki şey yapması gerekir. İlk olarak, senaryoda kullanmayı planladıkları her WebPart denetimin AuthorizationFilter özelliğine bir dize değeri (değer rastgele olabilir) atamalıdır. Ayrıca, denetim olmayan WebPart diğer sunucu denetimi türleri için de bu özelliğe bir değer atayabilirler, çünkü bölgelere WebPartZoneBase yerleştirilirlerse, bu denetimler çalışma zamanında bir GenericWebPart denetimle sarmaılır ve bu denetim özelliği devralır AuthorizationFilter .

Filtreleme senaryosu oluşturmak için gerekli ikinci adım, yöntemini geçersiz kılmak IsAuthorized(Type, String, String, Boolean) veya olay için bir olay işleyicisi oluşturmaktır AuthorizeWebPart . Bu yöntemlerde geliştirici özelliğini denetleyebiliyor AuthorizationFilter ve değer denetimin yetkilendirilmemesi gerektiğini gösteriyorsa geliştirici yöntemin değerini döndürmesini IsAuthorizedfalsesağlar.

Not

Kod örnekleri ve yöntemini kullanarak özelleştirilmiş bir filtreleme senaryosunun nasıl ayarlanacağına IsAuthorized ilişkin bir açıklama için yönteminin aşırı yüklemelerine ilişkin konulara bakın.

IsAuthorized(WebPart)

Denetimin sayfaya eklenme yetkisi olup olmadığını belirlemeye yönelik ilk adımları yürütür.

public:
 bool IsAuthorized(System::Web::UI::WebControls::WebParts::WebPart ^ webPart);
public bool IsAuthorized (System.Web.UI.WebControls.WebParts.WebPart webPart);
member this.IsAuthorized : System.Web.UI.WebControls.WebParts.WebPart -> bool
Public Function IsAuthorized (webPart As WebPart) As Boolean

Parametreler

webPart
WebPart

Yetkilendirme WebPart için denetlenen bir veya başka bir sunucu denetimi.

Döndürülenler

Sayfaya eklenip webPart eklenemeyeceğini gösteren Boole değeri.

Özel durumlar

webPart, null değeridir.

Örnekler

Aşağıdaki kod örneği, bir denetimin IsAuthorized(WebPart) sayfaya eklenme yetkisi olup olmadığını belirlemek için kodunuzdan yönteminin nasıl çağrıldığını gösterir.

Kod örneğinin üç bölümü vardır:

  • yöntemini geçersiz kılan IsAuthorized özel WebPartManager denetim.

  • Denetim için filtre oluşturan bir WebPart Web sayfası.

  • Kod örneğinin nasıl çalıştırılacaklarına ilişkin bir açıklama.

Bu kod örneği, özelliğin özel WebPartManager işlenmesini AuthorizationFilter sağlamak için aşırı yükleme yöntemini geçersiz kılan IsAuthorized(Type, String, String, Boolean) özel bir denetim kullanır. Bu denetim özelliğinin değerini admin denetler ve değeri varsa denetimi yetkiler. Bir denetimin değeri farklıysa yetkilendirilmemiştir; özellik değeri olmayan denetimler de yetkilendirilmiştir ve filtreleme senaryosunun bir parçası olmadığı varsayılır.

Bu kod örneğinin çalışması için bu kaynak kodunu derlemeniz gerekir. Bunu açıkça derleyebilir ve sonuçta elde edilen derlemeyi Web sitenizin Bin klasörüne veya genel derleme önbelleğine yerleştirebilirsiniz. Alternatif olarak, kaynak kodu sitenizin App_Code klasörüne koyabilirsiniz; burada çalışma zamanında dinamik olarak derlenir. Bu kod örneği dinamik derleme yöntemini kullanır. Derlemeyi gösteren bir izlenecek yol için bkz . İzlenecek Yol: Özel Web Sunucusu Denetimi Geliştirme ve Kullanma.

using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
  public class MyManagerAuthorize : WebPartManager
  {
    public override bool IsAuthorized(Type type, string path, string authorizationFilter, bool isShared)
    {
      if (!String.IsNullOrEmpty(authorizationFilter))
      {
        if (authorizationFilter == "admin")
          return true;
        else
          return false;
      }
      else
            {
                return true;
            }
        }
  }
}
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyManagerAuthorize
    Inherits WebPartManager

    Public Overrides Function IsAuthorized(ByVal type As Type, _
      ByVal path As String, ByVal authorizationFilter As String, _
      ByVal isShared As Boolean) As Boolean

      If Not String.IsNullOrEmpty(authorizationFilter) Then
        If authorizationFilter = "admin" Then
          Return True
        Else
          Return False
        End If
      Else
        Return True
      End If

    End Function

  End Class

End Namespace

Kod örneğinin ikinci bölümü, bir denetimi dışlama olasılığı olan bir filtre oluşturur. Aşağıdaki Web sayfası bir <asp:webpartzone> öğede üç ASP.NET sunucu denetimi içerir. Birinci ve ikinci denetimlerin AuthorizationFilter özellikleri farklı değerlere ayarlanmıştır ve üçüncüsü özelliği atamaz. Bu yetkilendirme değeri çalışma zamanında denetlenebilir ve filtre geliştirici tarafından ayarlanan ölçütlere uyuyorsa denetim sayfaya eklenebilir. Ayrıca yönteminde Page_Load kodun, denetimlerin her birinin yetkilendirilip yetkilendirilmediğini belirlemek için yöntemini çağırdığına IsAuthorized(WebPart) ve varsa her denetimin özelliğini ayarlandığına ExportMode dikkat edin.

<%@ Page Language="C#" %>
<%@ Register Namespace="Samples.AspNet.CS.Controls" 
    TagPrefix="aspSample"%>


<!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 Page_Load(object sender, EventArgs e)
  {
    foreach (WebPart part in mgr1.WebParts)
    {
      if (mgr1.IsAuthorized(part))
        part.ExportMode = WebPartExportMode.All;
    }
    
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"  />
      <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"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls" 
    TagPrefix="aspSample"%>


<!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 Page_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    Dim part As WebPart
    For Each part In mgr1.WebParts
      If mgr1.IsAuthorized(part) Then
        part.ExportMode = WebPartExportMode.All
      End If
    Next
  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"  />
      <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"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>

Kod örneğinin çalışması için, Web Bölümleri açıklama dosyalarını dışarı aktarmayı etkinleştirmek için Web.config dosyasına bir ayar eklemeniz gerektiğini unutmayın. Bu kod örneğinin Web sayfasıyla aynı dizinde bir Web.config dosyanız olduğundan emin olun. <system.web> bölümünde, aşağıdaki işaretlemede olduğu gibi özniteliği olarak ayarlanmış truebir enableExport öğe olduğundan emin olun<webParts>.

<webParts enableExport="true">

...

</webParts>

Sayfayı bir tarayıcıda yükledikten sonra, geçersiz kılınan yöntemdeki ölçütlere eşleştiğinden ilk denetimin görüntülendiğini unutmayın. İkinci denetim, filtre tarafından dışlandığından sayfaya eklenmez. Üçüncü denetim de eklenir çünkü özellik kümesi yoktur AuthorizationFilter . Her iki denetimin başlık çubuğunda fiiller menü simgesine tıklarsanız, ilgili ExportMode özellik değerleri atandığından her ikisi de dışarı aktarılabilir.

Açıklamalar

IsAuthorized yöntemi, bir WebPart denetimin yetkilendirmesini denetlemek için ayarlanan Web Bölümleri denetimi tarafından çağrılan ilk yöntemdir. Parametre olarak kabul eder webPart ve denetimin bir sayfaya eklenip eklenmeyeceğini belirleyen bir işlem başlatır. Belirli bir denetimin yetkilendirilip yetkilendirilmediğini belirlemeniz gerektiğinde doğrudan kodunuzdan bu yöntemi çağırabilirsiniz.

Bu yöntem, denetimin sınıftan devralıp devralmadığını WebPart veya bir denetim olup olmadığını ve varsa ne tür bir GenericWebPart alt denetim içerdiğini belirlemeye yönelik ilk görevleri yürütür. Yetkilendirme görevini tamamlamak için aşırı yükleme yöntemini çağırır IsAuthorized(Type, String, String, Boolean) .

Arayanlara Notlar

Bu yöntem doğrudan kodunuzdan çağrılır. Yetkilendirme işlemi üzerinde daha fazla programlı denetim elde etmek istiyorsanız, aşırı yükleme yöntemini geçersiz kılabilirsiniz IsAuthorized(Type, String, String, Boolean) .

Ayrıca bkz.

Şunlara uygulanır

IsAuthorized(Type, String, String, Boolean)

Denetimin sayfaya ekleme yetkisi olup olmadığını belirlemeye yönelik son adımları yürütür.

public:
 virtual bool IsAuthorized(Type ^ type, System::String ^ path, System::String ^ authorizationFilter, bool isShared);
public virtual bool IsAuthorized (Type type, string path, string authorizationFilter, bool isShared);
abstract member IsAuthorized : Type * string * string * bool -> bool
override this.IsAuthorized : Type * string * string * bool -> bool
Public Overridable Function IsAuthorized (type As Type, path As String, authorizationFilter As String, isShared As Boolean) As Boolean

Parametreler

type
Type

Yetkilendirme Type için denetlenen denetimin değeri.

path
String

Denetim bir kullanıcı denetimiyse, yetkilendirilmekte olan denetimin kaynak dosyasının göreli uygulama yolu.

authorizationFilter
String

Denetimin bir sayfaya eklenip eklenemeyeceğini AuthorizationFilter yetkilendirmek için kullanılan, denetimin WebPart özelliğine atanan rastgele dize değeri.

isShared
Boolean

Yetkilendirme için denetlenen denetimin paylaşılan bir denetim olup olmadığını gösterir; başka bir deyişle uygulamanın birçok kullanıcısı veya tüm kullanıcıları tarafından görülebilir ve IsShared özellik değeri olarak trueayarlanır.

Döndürülenler

Denetimin sayfaya ekleme yetkisi olup olmadığını gösteren Boole değeri.

Özel durumlar

type, null değeridir.

type bir kullanıcı denetimidir ve path ya da null boş bir dizedir ("").

-veya-

type bir kullanıcı denetimi değildir ve path buna atanmış bir değere sahiptir.

Örnekler

Aşağıdaki kod örneği, bir denetimin IsAuthorized sayfaya ekleme yetkisi olup olmadığını belirlemek için yönteminin nasıl geçersiz kılındığını gösterir.

İlk adım, bir denetimi dışlama olasılığı olan bir filtre oluşturmaktır. Aşağıdaki Web sayfası bir <asp:webpartzone> öğede üç ASP.NET sunucu denetimi içerir. Birinci ve ikinci denetimlerin AuthorizationFilter özellikleri farklı değerlere ayarlanmıştır ve üçüncüsü özelliği atamaz. Bu yetkilendirme değeri çalışma zamanında denetlenebilir ve filtre geliştirici tarafından ayarlanan ölçütlere uyuyorsa denetim sayfaya eklenebilir.

<%@ Page Language="C#" %>
<%@ Register Namespace="Samples.AspNet.CS.Controls" 
    TagPrefix="aspSample"%>


<!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 Page_Load(object sender, EventArgs e)
  {
    foreach (WebPart part in mgr1.WebParts)
    {
      if (mgr1.IsAuthorized(part))
        part.ExportMode = WebPartExportMode.All;
    }
    
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"  />
      <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"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls" 
    TagPrefix="aspSample"%>


<!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 Page_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    Dim part As WebPart
    For Each part In mgr1.WebParts
      If mgr1.IsAuthorized(part) Then
        part.ExportMode = WebPartExportMode.All
      End If
    Next
  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"  />
      <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"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>

İkinci adım, yöntemini geçersiz kılmak IsAuthorized(Type, String, String, Boolean) ve yetkilendirme filtreleri için özel işleme oluşturmaktır. Kodun önce özelliğin bir değeri olup olmadığını denetlediğini, böylece özelliği atamayan tüm denetimlerin AuthorizationFilter otomatik olarak ekleneceğini unutmayın. Bir denetimin filtresi varsa, kod yalnızca filtre değeri değerine admineşitse döndürürtrue. Bu, rollerine bağlı olarak belirli kullanıcılara belirli denetimleri görüntülemek için kullanabileceğiniz basit bir mekanizmayı gösterir. Rollerin kullanıldığı tam bir örnek bu konunun kapsamı dışında olsa da, bu kod örneğindeki geçersiz kılınan yöntemle aynı mantığı kullanabilirsiniz, ancak geçerli kullanıcının yetkilendirme filtresi değeriyle eşleşen bir rolde olup olmadığını denetleyebiliyor ve ardından denetimi yalnızca o kullanıcı için ekleyebiliyorsunuz. Bu, bazı kullanıcıların tüm denetimleri, diğer kullanıcıların ise yalnızca seçili denetimleri görebileceği sayfalar oluşturmanıza olanak tanır. Rolleri kullandıysanız filtreyi denetleen mantık şöyle görünebilir:

If Roles.IsUserInRole(Page.User.Identity.Name, authorizationFilter) Then  
  return True  
Else  
  return False  
End If  
if(Roles.IsUserInRole(Page.User.Identity.Name, authorizationFilter))  
    return true;  
else  
    return false;  

Kod örneğinin çalışması için bu kaynak kodunu derlemeniz gerekir. Bunu açıkça derleyebilir ve sonuçta elde edilen derlemeyi Web sitenizin Bin klasörüne veya genel derleme önbelleğine yerleştirebilirsiniz. Alternatif olarak, kaynak kodu sitenizin App_Code klasörüne koyabilirsiniz; burada çalışma zamanında dinamik olarak derlenir. Bu kod örneği dinamik derleme yöntemini kullanır. Derlemeyi gösteren bir izlenecek yol için bkz . İzlenecek Yol: Özel Web Sunucusu Denetimi Geliştirme ve Kullanma.

using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
  public class MyManagerAuthorize : WebPartManager
  {
    public override bool IsAuthorized(Type type, string path, string authorizationFilter, bool isShared)
    {
      if (!String.IsNullOrEmpty(authorizationFilter))
      {
        if (authorizationFilter == "admin")
          return true;
        else
          return false;
      }
      else
            {
                return true;
            }
        }
  }
}
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyManagerAuthorize
    Inherits WebPartManager

    Public Overrides Function IsAuthorized(ByVal type As Type, _
      ByVal path As String, ByVal authorizationFilter As String, _
      ByVal isShared As Boolean) As Boolean

      If Not String.IsNullOrEmpty(authorizationFilter) Then
        If authorizationFilter = "admin" Then
          Return True
        Else
          Return False
        End If
      Else
        Return True
      End If

    End Function

  End Class

End Namespace

Sayfayı bir tarayıcıda yükledikten sonra, geçersiz kılınan yöntemdeki ölçütlere eşleştiğinden ilk denetimin görüntülendiğini unutmayın. filtre değeri dışlandığından ikinci denetim sayfaya eklenmez. Üçüncü denetim, özelliği ayarlanmadığından AuthorizationFilter eklenir. İkinci denetimdeki özellik değerini ilk denetiminkiyle eşleşecek şekilde değiştirir ve sonra sayfayı yeniden çalıştırırsanız, ikinci denetim de eklenir.

Açıklamalar

IsAuthorized(Type, String, String, Boolean) aşırı yükleme yöntemi, bir denetimin sayfaya ekleme yetkisi olup olmadığını belirlemeye yönelik son adımları uygular. yöntemi, geçerli bir tür olmasını ve yalnızca denetlenen denetimin path bir kullanıcı denetimi olması durumunda bir değere sahip olmasını sağlartype. Ardından olayı tetikleyen AuthorizeWebPart kritik OnAuthorizeWebPart yöntemini çağırır.

Devralanlara Notlar

Yetkilendirmeyi denetlerken ek işleme sağlamak istiyorsanız, bu yöntem sınıfından WebPartManager devralınarak geçersiz kılınabilir. parametresindeki authorizationFilter belirli değerleri denetlemek için yöntemini geçersiz kılmak ve değeri temel alarak denetimin sayfaya eklenip eklenmeyeceğini belirleyen bir Boole değeri döndürmek isteyebilirsiniz.

Ayrıca yetkilendirme filtrelerini denetlemek ve özel işleme sağlamak isteyen sayfa geliştiricileri için, bu işlemi herhangi bir sınıftan devralmak zorunda kalmadan bir .aspx sayfasında veya arka planda kod içeren bir dosyada satır içinde yapma seçeneği vardır. Denetimin yöntemi için OnAuthorizeWebPart(WebPartAuthorizationEventArgs) sayfasında alternatif bir olay işleyicisi WebPartManager bildirebilirsiniz. Diğer ayrıntılar ve bir örnek için yöntemine OnAuthorizeWebPart(WebPartAuthorizationEventArgs) bakın.

Ayrıca bkz.

Şunlara uygulanır