Udostępnij za pośrednictwem


WebPartManager.IsAuthorized Metoda

Definicja

Określa, czy WebPart do strony można dodać kontrolkę serwera lub inną.

Przeciążenia

IsAuthorized(WebPart)

Przeprowadza początkowe kroki w określaniu, czy kontrolka ma zostać dodana do strony.

IsAuthorized(Type, String, String, Boolean)

Przeprowadza końcowe kroki w określaniu, czy kontrolka ma zostać dodana do strony.

Uwagi

Częścią elastyczności funkcji składników Web Part jest możliwość dodawania kontrolek serwera do stron sieci Web w czasie wykonywania. Istnieje wiele typowych scenariuszy, w których można dodać kontrolkę serwera (która może być kontrolką niestandardową, kontrolką serwera niestandardowego WebPart , kontrolką użytkownika lub kontrolką ASP.NET).

W następujących typowych scenariuszach kontrolka składników Web Part próbuje dodać kontrolki serwera do strony, a IsAuthorized metoda jest wywoływana w celu ich autoryzowania:

  • Po dodaniu kontrolki serwera przez zadeklarowanie jej w znaczniku strony sieci Web w WebPartZoneBase strefie.

  • Gdy kontrolka serwera jest dodawana programowo do strefy.

  • Gdy użytkownik importuje kontrolkę serwera do katalogu składników Web Part kontrolek.

  • Gdy istniejąca kontrolka serwera zostanie załadowana z magazynu danych personalizacji.

  • Po dodaniu kontrolki serwera do DeclarativeCatalogPart kontrolki w celu udostępnienia jej w katalogu kontrolek serwera.

W każdym scenariuszu, w którym są dodawane kontrolki, metoda jest wywoływana, aby upewnić się, IsAuthorized że wszystkie kryteria autoryzacji zostały spełnione, aby umożliwić dodanie kontrolki. Gdy kontrolka jest autoryzowana, jest ona dodawana normalnie tak, jakby nie było scenariusza filtrowania. Gdy kontrolka nie jest autoryzowana, zestaw kontrolek składników Web Part może odpowiadać na kilka sposobów, w zależności od kontekstu. Zestaw kontrolek może dyskretnie nie dodać nieautoryzowanej części (jeśli nie ma potrzeby informowania użytkownika), może wyświetlić komunikat o błędzie lub dodać wystąpienie UnauthorizedWebPart klasy jako symbol zastępczy. Ten obiekt zastępczy nie jest widoczny na stronie, ale jest widoczny w kodzie źródłowym strony, aby wskazać, że nieautoryzowana kontrolka została wykluczona.

Określenie, czy kontrolka jest autoryzowana, to filtr autoryzacji. Filtr autoryzacji to funkcja w zestawie kontrolek składników Web Part, która umożliwia deweloperom wykluczanie ze strony wszystkich kontrolek, które nie spełniają określonych kryteriów.

Aby utworzyć scenariusz filtrowania, deweloperzy muszą wykonać dwie czynności. Najpierw muszą przypisać wartość ciągu (wartość może być dowolna) do AuthorizationFilter właściwości każdej WebPart kontrolki, której planuje użyć w scenariuszu. Mogą również przypisać wartość do tej właściwości dla innych typów kontrolek serwera, które nie WebPart są kontrolkami, ponieważ jeśli są umieszczone w WebPartZoneBase strefach, takie kontrolki są opakowane z kontrolką GenericWebPart w czasie wykonywania, a ta kontrolka dziedziczy AuthorizationFilter właściwość.

Drugim krokiem niezbędnym do utworzenia scenariusza filtrowania jest zastąpienie IsAuthorized(Type, String, String, Boolean) metody lub utworzenie procedury obsługi zdarzeń dla AuthorizeWebPart zdarzenia. W tych metodach deweloper może sprawdzić AuthorizationFilter właściwość, a jeśli wartość wskazuje, że kontrolka nie powinna być autoryzowana, deweloper zapewnia, że IsAuthorized metoda zwraca wartość false.

Uwaga

Przykłady kodu i opis sposobu konfigurowania dostosowanego scenariusza filtrowania przy użyciu IsAuthorized metody można znaleźć w tematach dotyczących przeciążeń metody .

IsAuthorized(WebPart)

Przeprowadza początkowe kroki w określaniu, czy kontrolka ma zostać dodana do strony.

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

Parametry

webPart
WebPart

Kontrola WebPart serwera lub inna kontrola serwera jest sprawdzana pod kątem autoryzacji.

Zwraca

Wartość logiczna wskazująca, czy webPart można dodać do strony.

Wyjątki

webPart to null.

Przykłady

Poniższy przykład kodu pokazuje, jak wywołać metodę IsAuthorized(WebPart) z kodu, aby określić, czy kontrolka ma być autoryzowana do dodania do strony.

Przykładowy kod ma trzy części:

  • Niestandardowa WebPartManager kontrolka, która zastępuje metodę IsAuthorized .

  • Strona sieci Web, która tworzy filtr dla kontrolki WebPart .

  • Wyjaśnienie sposobu uruchamiania przykładu kodu.

W tym przykładzie kodu użyto niestandardowej WebPartManager kontrolki, która zastępuje IsAuthorized(Type, String, String, Boolean) metodę przeciążenia w celu zapewnienia niestandardowej AuthorizationFilter obsługi właściwości. Ta kontrolka sprawdza wartość admin właściwości i, jeśli wartość jest obecna, autoryzuje kontrolkę. Jeśli kontrolka ma inną wartość, nie jest autoryzowana; kontrolki bez wartości właściwości są również autoryzowane, ponieważ zakłada się, że nie są częścią scenariusza filtrowania.

Aby ten przykład kodu został uruchomiony, należy skompilować ten kod źródłowy. Można je jawnie skompilować i umieścić wynikowy zestaw w folderze Bin witryny sieci Web lub globalnej pamięci podręcznej zestawów. Możesz też umieścić kod źródłowy w folderze App_Code witryny, w którym będzie dynamicznie kompilowany w czasie wykonywania. W tym przykładzie kodu użyto metody kompilacji dynamicznej. Aby zapoznać się z przewodnikiem, który pokazuje, jak skompilować, zobacz Przewodnik: opracowywanie i używanie niestandardowej kontrolki serwera sieci Web.

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

Druga część przykładu kodu tworzy filtr, który może potencjalnie wykluczyć kontrolkę. Poniższa strona sieci Web zawiera trzy kontrolki serwera ASP.NET w elemecie <asp:webpartzone> . Zwróć uwagę, że pierwsze i drugie kontrolki mają ich AuthorizationFilter właściwości ustawione na różne wartości, a trzecia nie przypisuje właściwości. Tę wartość autoryzacji można sprawdzić w czasie wykonywania, a kontrolkę można dodać do strony, jeśli filtr pasuje do kryteriów ustawionych przez dewelopera. Zwróć również uwagę, że w metodzie Page_Load kod wywołuje metodę IsAuthorized(WebPart) w celu określenia, czy każda z kontrolek jest autoryzowana, a jeśli tak, ustawia właściwość każdej kontrolki ExportMode .

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

Należy pamiętać, że aby przykładowy kod działał, należy dodać ustawienie w pliku Web.config, aby włączyć eksportowanie plików opisu składników Web Part. Upewnij się, że masz plik Web.config w tym samym katalogu co strona sieci Web dla tego przykładu kodu. <system.web> W sekcji upewnij się, że istnieje <webParts> element z atrybutem ustawionym enableExport na true, jak w poniższym znaczniku.

<webParts enableExport="true">

...

</webParts>

Po załadowaniu strony w przeglądarce należy pamiętać, że pierwsza kontrolka jest wyświetlana, ponieważ jest zgodna z kryteriami w metodzie przesłonięcia. Druga kontrolka nie jest dodawana do strony, ponieważ jest wykluczona przez filtr. Dodano również trzecią kontrolkę, ponieważ nie ma ustawionej właściwości AuthorizationFilter . Zwróć uwagę, że po kliknięciu ikony menu czasowników na pasku tytułu każdej kontrolki można je wyeksportować, ponieważ zostały przypisane odpowiednie ExportMode wartości właściwości.

Uwagi

Metoda IsAuthorized jest początkową metodą wywoływaną przez kontrolkę składników Web Part ustawioną w celu sprawdzenia autoryzacji dla kontrolki WebPart . webPart Przyjmuje jako parametr i rozpoczyna proces, który ostatecznie określa, czy kontrolka zostanie dodana do strony. Wywołaj tę metodę bezpośrednio z kodu, gdy musisz określić, czy dana kontrolka jest autoryzowana.

Ta metoda wykonuje początkowe zadania określania, czy kontrolka dziedziczy z WebPart klasy, czy jest kontrolką GenericWebPart , a jeśli tak, jaki typ kontrolki podrzędnej zawiera. Aby zakończyć zadanie autoryzacji, wywołuje metodę IsAuthorized(Type, String, String, Boolean) przeciążenia.

Uwagi dotyczące wywoływania

Ta metoda jest wywoływana bezpośrednio z kodu. Jeśli chcesz uzyskać większą kontrolę programową nad procesem autoryzacji, możesz zastąpić metodę IsAuthorized(Type, String, String, Boolean) przeciążenia.

Zobacz też

Dotyczy

IsAuthorized(Type, String, String, Boolean)

Przeprowadza końcowe kroki w określaniu, czy kontrolka ma zostać dodana do strony.

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

Parametry

type
Type

Kontrolka Type sprawdzana pod kątem autoryzacji.

path
String

Względna ścieżka aplikacji do pliku źródłowego dla autoryzowanej kontrolki, jeśli kontrolka jest kontrolką użytkownika.

authorizationFilter
String

Dowolna wartość ciągu przypisana do AuthorizationFilter właściwości kontrolki WebPart , używana do autoryzacji, czy można dodać kontrolkę do strony.

isShared
Boolean

Wskazuje, czy kontrolka sprawdzana pod kątem autoryzacji jest kontrolką współdzieloną, co oznacza, że jest widoczna dla wielu lub wszystkich użytkowników aplikacji, a jej IsShared wartość właściwości ma wartość true.

Zwraca

Wartość logiczna wskazująca, czy kontrolka ma zostać dodana do strony.

Wyjątki

type to null.

type jest kontrolką użytkownika i path jest null ciągiem pustym ("").

-lub-

type nie jest kontrolką użytkownika i path ma przypisaną do niej wartość.

Przykłady

W poniższym przykładzie kodu pokazano, jak zastąpić IsAuthorized metodę w celu określenia, czy kontrolka ma zostać dodana do strony.

Pierwszym krokiem jest utworzenie filtru, który może potencjalnie wykluczyć kontrolkę. Poniższa strona sieci Web zawiera trzy kontrolki serwera ASP.NET w elemecie <asp:webpartzone> . Zwróć uwagę, że pierwsze i drugie kontrolki mają ich AuthorizationFilter właściwości ustawione na różne wartości, a trzecia nie przypisuje właściwości. Tę wartość autoryzacji można sprawdzić w czasie wykonywania, a kontrolkę można dodać do strony, jeśli filtr pasuje do kryteriów ustawionych przez dewelopera.

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

Drugim krokiem jest zastąpienie metody i utworzenie niestandardowej IsAuthorized(Type, String, String, Boolean) obsługi filtrów autoryzacji. Należy pamiętać, że kod najpierw sprawdza, czy właściwość ma wartość, dzięki czemu każda kontrolka, która nie przypisuje AuthorizationFilter właściwości, zostanie dodana automatycznie. Jeśli kontrolka ma filtr, kod zwraca true wartość tylko wtedy, gdy wartość filtru jest równa admin. Pokazuje to prosty mechanizm, którego można użyć do wyświetlania niektórych kontrolek niektórym użytkownikom w zależności od ich roli. Chociaż pełny przykład użycia ról wykracza poza zakres tego tematu, możesz użyć tej samej logiki co metoda przesłonięć w tym przykładzie kodu, z wyjątkiem tego, że można sprawdzić, czy bieżący użytkownik znajduje się w roli zgodnej z wartością filtru autoryzacji, a następnie dodać kontrolkę tylko dla tego użytkownika. Umożliwiłoby to tworzenie stron, na których niektórzy użytkownicy będą widzieć wszystkie kontrolki, a inni użytkownicy będą widzieć tylko wybrane kontrolki. W ten sposób logika sprawdzająca filtr może wyglądać, jeśli użyto ról:

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;  

Aby przykład kodu został uruchomiony, należy skompilować ten kod źródłowy. Można je jawnie skompilować i umieścić wynikowy zestaw w folderze Bin witryny sieci Web lub globalnej pamięci podręcznej zestawów. Możesz też umieścić kod źródłowy w folderze App_Code witryny, w którym będzie dynamicznie kompilowany w czasie wykonywania. W tym przykładzie kodu użyto metody kompilacji dynamicznej. Aby zapoznać się z przewodnikiem, który pokazuje, jak skompilować, zobacz Przewodnik: opracowywanie i używanie niestandardowej kontrolki serwera sieci Web.

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

Po załadowaniu strony w przeglądarce należy pamiętać, że pierwsza kontrolka jest wyświetlana, ponieważ jest zgodna z kryteriami w metodzie przesłonięcia. Druga kontrolka nie jest dodawana do strony, ponieważ jej wartość filtru jest wykluczona. Trzecia kontrolka jest dodawana, ponieważ nie ma ustawionej właściwości AuthorizationFilter . Jeśli zmienisz wartość właściwości w drugiej kontrolce tak, aby odpowiadała pierwszej kontrolce, a następnie ponownie uruchomisz stronę, zostanie również dodana druga kontrolka.

Uwagi

Metoda IsAuthorized(Type, String, String, Boolean) przeciążenia wykonuje ostatnie kroki w określaniu, czy kontrolka ma zostać dodana do strony. Metoda gwarantuje, że type jest prawidłowym typem i ma path wartość tylko wtedy, gdy sprawdzana kontrolka jest kontrolką użytkownika. Następnie wywołuje metodę krytyczną OnAuthorizeWebPart , która zgłasza AuthorizeWebPart zdarzenie.

Uwagi dotyczące dziedziczenia

Ta metoda może zostać zastąpiona przez dziedziczenie z WebPartManager klasy, jeśli chcesz zapewnić dodatkową obsługę podczas sprawdzania autoryzacji. Możesz zastąpić metodę, aby sprawdzić określone wartości w parametrze authorizationFilter i na podstawie wartości, zwrócić wartość logiczną określającą, czy kontrolka zostanie dodana do strony.

W przypadku deweloperów stron, którzy chcą również sprawdzić filtry autoryzacji i zapewnić obsługę niestandardową, istnieje opcja wykonywania tej czynności w tekście na stronie .aspx lub w pliku za kodem bez konieczności dziedziczenia z jakiejkolwiek klasy. Możesz zadeklarować alternatywną procedurę obsługi zdarzeń na stronie dla OnAuthorizeWebPart(WebPartAuthorizationEventArgs) metody kontrolki WebPartManager . Aby uzyskać więcej szczegółów i przykład, zobacz metodę OnAuthorizeWebPart(WebPartAuthorizationEventArgs) .

Zobacz też

Dotyczy