WebPartManager.IsAuthorized Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bestimmt, ob einer Seite ein WebPart oder ein anderes Serversteuerelement hinzugefügt werden kann.
Überlädt
| Name | Beschreibung |
|---|---|
| IsAuthorized(WebPart) |
Führt die ersten Schritte aus, um zu bestimmen, ob ein Steuerelement autorisiert ist, einer Seite hinzuzufügen. |
| IsAuthorized(Type, String, String, Boolean) |
Führt die letzten Schritte aus, um zu bestimmen, ob ein Steuerelement autorisiert ist, einer Seite hinzuzufügen. |
Hinweise
Ein Teil der Flexibilität des Webparts-Features ist die Möglichkeit, Zur Laufzeit Serversteuerelemente zu Webseiten hinzuzufügen. Es gibt eine Reihe häufiger Szenarien, in denen ein Serversteuerelement (ein benutzerdefiniertes Steuerelement, ein benutzerdefiniertes WebPart Serversteuerelement, ein Benutzersteuerelement oder ein ASP.NET-Steuerelement) hinzugefügt werden kann.
In den folgenden gängigen Szenarien versucht das Webpart-Steuerelement, einer Seite Serversteuerelemente hinzuzufügen, und die IsAuthorized Methode wird aufgerufen, um sie zu autorisieren:
Wenn ein Serversteuerelement hinzugefügt wird, indem es im Markup einer Webseite innerhalb einer WebPartZoneBase Zone deklariert wird.
Wenn ein Serversteuerelement programmgesteuert zu einer Zone hinzugefügt wird.
Wenn ein Benutzer ein Serversteuerelement in einen Webpartkatalog von Steuerelementen importiert.
Wenn ein vorhandenes Serversteuerelement aus dem Personalisierungsdatenspeicher geladen wird.
Wenn einem Steuerelement ein DeclarativeCatalogPart Serversteuerelement hinzugefügt wird, um es in einem Katalog von Serversteuerelementen verfügbar zu machen.
In jedem Szenario, in dem Steuerelemente hinzugefügt werden, wird die IsAuthorized Methode aufgerufen, um sicherzustellen, dass alle Autorisierungskriterien erfüllt wurden, damit ein Steuerelement hinzugefügt werden kann. Wenn ein Steuerelement autorisiert ist, wird es normal hinzugefügt, wie es wäre, wenn kein Filterszenario vorhanden wäre. Wenn ein Steuerelement nicht autorisiert ist, kann der Webpart-Steuerelementsatz je nach Kontext auf verschiedene Arten reagieren. Der Steuerelementsatz kann im Hintergrund keinen nicht autorisierten Teil hinzufügen (wenn der Benutzer nicht informiert werden muss), kann es eine Fehlermeldung anzeigen oder eine Instanz der UnauthorizedWebPart Klasse als Platzhalter hinzufügen. Dieses Platzhalterobjekt ist auf der Seite nicht sichtbar, ist aber im Quellcode der Seite sichtbar, um anzugeben, dass ein nicht autorisiertes Steuerelement ausgeschlossen wurde.
Die Determinante, ob ein Steuerelement autorisiert ist, ist der Autorisierungsfilter. Ein Autorisierungsfilter ist ein Feature im Webpart-Steuerelementsatz, mit dem Entwickler alle Steuerelemente ausschließen können, die nicht den angegebenen Kriterien entsprechen.
Um ein Filterszenario zu erstellen, müssen Entwickler zwei Dinge ausführen. Zunächst müssen sie der AuthorizationFilter Eigenschaft jedes WebPart Steuerelements, das sie im Szenario verwenden möchten, einen Zeichenfolgenwert (der Wert kann beliebig sein) zuweisen. Sie können dieser Eigenschaft auch einen Wert für andere Typen von Serversteuerelementen zuweisen, die keine WebPart Steuerelemente sind, denn wenn sie in WebPartZoneBase Zonen platziert werden, werden solche Steuerelemente zur Laufzeit mit einem GenericWebPart Steuerelement umschlossen, und dieses Steuerelement erbt die AuthorizationFilter Eigenschaft.
Der zweite erforderliche Schritt zum Erstellen eines Filterszenarios besteht darin, die IsAuthorized(Type, String, String, Boolean) Methode entweder außer Kraft zu setzen oder einen Ereignishandler für das AuthorizeWebPart Ereignis zu erstellen. In diesen Methoden kann ein Entwickler die AuthorizationFilter Eigenschaft überprüfen, und wenn der Wert angibt, dass das Steuerelement nicht autorisiert werden soll, stellt der Entwickler sicher, dass die IsAuthorized Methode einen Wert von false.
Hinweis
Codebeispiele und eine Beschreibung zum Einrichten eines benutzerdefinierten Filterszenarios mithilfe der IsAuthorized Methode finden Sie in den Themen zu den Überladungen der Methode.
IsAuthorized(WebPart)
Führt die ersten Schritte aus, um zu bestimmen, ob ein Steuerelement autorisiert ist, einer Seite hinzuzufügen.
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
Parameter
- webPart
- WebPart
Ein WebPart oder ein anderes Serversteuerelement, das für die Autorisierung überprüft wird.
Gibt zurück
Ein boolescher Wert, der angibt, ob webPart einer Seite hinzugefügt werden kann.
Ausnahmen
webPart ist null.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die IsAuthorized(WebPart) Methode aus Dem Code aufgerufen wird, um zu bestimmen, ob ein Steuerelement autorisiert ist, einer Seite hinzugefügt zu werden.
Das Codebeispiel enthält drei Teile:
Ein benutzerdefiniertes WebPartManager Steuerelement, das die IsAuthorized Methode außer Kraft setzt.
Eine Webseite, die einen Filter für ein WebPart Steuerelement erstellt.
Eine Erläuterung zum Ausführen des Codebeispiels.
In diesem Codebeispiel wird ein benutzerdefiniertes Steuerelement verwendet, das die IsAuthorized(Type, String, String, Boolean) Überladungsmethode außer Kraft setzt, um eine benutzerdefinierte WebPartManager Behandlung der AuthorizationFilter Eigenschaft bereitzustellen. Dieses Steuerelement überprüft auf einen Eigenschaftswert von admin und autorisiert, wenn der Wert vorhanden ist, das Steuerelement. Wenn ein Steuerelement einen anderen Wert hat, ist es nicht autorisiert; Steuerelemente ohne den Eigenschaftswert sind ebenfalls autorisiert, da davon ausgegangen wird, dass sie nicht Teil des Filterszenarios sind.
Damit dieses Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren. Sie können sie explizit kompilieren und die resultierende Assembly im Ordner "Bin" ihrer Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im App_Code Ordner Ihrer Website ablegen, in dem er zur Laufzeit dynamisch kompiliert wird. In diesem Codebeispiel wird die dynamische Kompilierungsmethode verwendet. Eine exemplarische Vorgehensweise, die das Kompilieren veranschaulicht, finden Sie unter Walkthrough: Developing and Using a Custom Web Server Control.
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
Der zweite Teil des Codebeispiels erstellt einen Filter, der ein Steuerelement potenziell ausschließen kann. Die folgende Webseite enthält drei ASP.NET Serversteuerelemente in einem <asp:webpartzone> Element. Beachten Sie, dass die Eigenschaften der ersten und zweiten Steuerelemente auf unterschiedliche Werte festgelegt sind AuthorizationFilter , und das dritte Steuerelement weist die Eigenschaft nicht zu. Dieser Autorisierungswert kann zur Laufzeit überprüft werden, und das Steuerelement kann der Seite hinzugefügt werden, wenn der Filter den vom Entwickler festgelegten Kriterien entspricht. Beachten Sie auch, dass der Code in der Page_Load Methode die IsAuthorized(WebPart) Methode aufruft, um zu bestimmen, ob jedes der Steuerelemente autorisiert ist, und wenn ja, legt er die Eigenschaft jedes Steuerelements ExportMode fest.
<%@ 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>
Beachten Sie, dass Sie für das Codebeispiel eine Einstellung in der datei Web.config hinzufügen müssen, um das Exportieren von Beschreibungsdateien für Webparts zu ermöglichen. Stellen Sie sicher, dass Sie über eine Web.config Datei im selben Verzeichnis wie die Webseite für dieses Codebeispiel verfügen.
<system.web> Stellen Sie im Abschnitt sicher, dass ein <webParts> Element mit einem enableExport Attribut vorhanden ist, das wie im folgenden Markup festgelegt trueist.
<webParts enableExport="true">
...
</webParts>
Beachten Sie nach dem Laden der Seite in einem Browser, dass das erste Steuerelement angezeigt wird, da es den Kriterien in der überschriebenen Methode entspricht. Das zweite Steuerelement wird der Seite nicht hinzugefügt, da es vom Filter ausgeschlossen wird. Das dritte Steuerelement wird ebenfalls hinzugefügt, da es nicht über den AuthorizationFilter Eigenschaftensatz verfügt. Beachten Sie, dass beide exportiert werden können, wenn Sie auf das Menüsymbol "Verben" in der Titelleiste eines der beiden Steuerelemente klicken, da ihnen die entsprechenden ExportMode Eigenschaftswerte zugewiesen wurden.
Hinweise
Die IsAuthorized Methode ist die erste Methode, die vom Webpart-Steuerelement aufgerufen wird, um die Autorisierung für ein WebPart Steuerelement zu überprüfen. Sie akzeptiert webPart als Parameter und beginnt einen Prozess, der letztendlich bestimmt, ob das Steuerelement einer Seite hinzugefügt wird. Rufen Sie diese Methode direkt aus Ihrem Code auf, wenn Sie ermitteln müssen, ob ein bestimmtes Steuerelement autorisiert ist.
Diese Methode führt die anfänglichen Aufgaben aus, um zu bestimmen, ob das Steuerelement von der WebPart Klasse erbt oder ein GenericWebPart Steuerelement ist und wenn ja, welche Art von untergeordnetem Steuerelement es enthält. Um die Autorisierungsaufgabe abzuschließen, ruft sie die IsAuthorized(Type, String, String, Boolean) Überladungsmethode auf.
Hinweise für Aufrufer
Diese Methode wird direkt aus Dem Code aufgerufen. Wenn Sie eine größere programmgesteuerte Kontrolle über den Autorisierungsprozess erhalten möchten, können Sie die IsAuthorized(Type, String, String, Boolean) Überladungsmethode außer Kraft setzen.
Weitere Informationen
- AuthorizationFilter
- AuthorizeWebPart
- OnAuthorizeWebPart(WebPartAuthorizationEventArgs)
- ASP.NET Webpart-Steuerelemente
Gilt für:
IsAuthorized(Type, String, String, Boolean)
Führt die letzten Schritte aus, um zu bestimmen, ob ein Steuerelement autorisiert ist, einer Seite hinzuzufügen.
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
Parameter
- path
- String
Der relative Anwendungspfad zur Quelldatei für das zu autorisierende Steuerelement, wenn es sich bei dem Steuerelement um ein Benutzersteuerelement handelt.
- authorizationFilter
- String
Ein beliebiger Zeichenfolgenwert, der der AuthorizationFilter Eigenschaft eines WebPart Steuerelements zugewiesen ist, wird verwendet, um zu autorisieren, ob ein Steuerelement einer Seite hinzugefügt werden kann.
- isShared
- Boolean
Gibt an, ob das steuerelement, das für die Autorisierung überprüft wird, ein freigegebenes Steuerelement ist, was bedeutet, dass es für viele oder alle Benutzer der Anwendung sichtbar ist und dessen IsShared Eigenschaftswert auf truefestgelegt ist.
Gibt zurück
Ein boolescher Wert, der angibt, ob ein Steuerelement autorisiert ist, einer Seite hinzuzufügen.
Ausnahmen
type ist null.
type ist ein Benutzersteuerelement und path ist entweder null oder eine leere Zeichenfolge ("").
- oder -
type ist kein Benutzersteuerelement und path hat ihm einen Wert zugewiesen.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie sie die IsAuthorized Methode außer Kraft setzen, um zu bestimmen, ob ein Steuerelement autorisiert ist, einer Seite hinzugefügt zu werden.
Der erste Schritt besteht darin, einen Filter zu erstellen, der ein Steuerelement potenziell ausschließen kann. Die folgende Webseite enthält drei ASP.NET Serversteuerelemente in einem <asp:webpartzone> Element. Beachten Sie, dass die Eigenschaften der ersten und zweiten Steuerelemente auf unterschiedliche Werte festgelegt sind AuthorizationFilter , und das dritte Steuerelement weist die Eigenschaft nicht zu. Dieser Autorisierungswert kann zur Laufzeit überprüft werden, und das Steuerelement kann der Seite hinzugefügt werden, wenn der Filter den vom Entwickler festgelegten Kriterien entspricht.
<%@ 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>
Der zweite Schritt besteht darin, die IsAuthorized(Type, String, String, Boolean) Methode außer Kraft zu setzen und benutzerdefinierte Behandlung für Autorisierungsfilter zu erstellen. Beachten Sie, dass der Code zuerst überprüft, ob die Eigenschaft einen Wert aufweist, sodass alle Steuerelemente, die die AuthorizationFilter Eigenschaft nicht zuweisen, automatisch hinzugefügt werden. Wenn ein Steuerelement über einen Filter verfügt, gibt der Code nur dann zurück true , wenn der Filterwert gleich administ. Dies veranschaulicht einen einfachen Mechanismus, mit dem Sie bestimmte Steuerelemente abhängig von ihrer Rolle für bestimmte Benutzer anzeigen können. Während ein vollständiges Beispiel für die Verwendung von Rollen über den Umfang dieses Themas hinausgeht, können Sie dieselbe Logik wie die überschriebene Methode in diesem Codebeispiel verwenden, mit der Ausnahme, dass Sie überprüfen können, ob sich der aktuelle Benutzer in einer Rolle befindet, die dem Autorisierungsfilterwert entspricht, und dann das Steuerelement nur für diesen Benutzer hinzufügen. Auf diese Weise können Sie Seiten erstellen, auf denen einige Benutzer alle Steuerelemente sehen würden, und andere Benutzer sehen nur ausgewählte Steuerelemente. So sieht die Logik, die den Filter überprüft, möglicherweise aus, wenn Sie Rollen verwendet haben:
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;
Damit das Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren. Sie können sie explizit kompilieren und die resultierende Assembly im Ordner "Bin" ihrer Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im App_Code Ordner Ihrer Website ablegen, in dem er zur Laufzeit dynamisch kompiliert wird. In diesem Codebeispiel wird die dynamische Kompilierungsmethode verwendet. Eine exemplarische Vorgehensweise, die das Kompilieren veranschaulicht, finden Sie unter Walkthrough: Developing and Using a Custom Web Server Control.
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
Beachten Sie nach dem Laden der Seite in einem Browser, dass das erste Steuerelement angezeigt wird, da es den Kriterien in der überschriebenen Methode entspricht. Das zweite Steuerelement wird der Seite nicht hinzugefügt, da der Filterwert ausgeschlossen ist. Das dritte Steuerelement wird hinzugefügt, da es nicht über den AuthorizationFilter Eigenschaftensatz verfügt. Wenn Sie den Eigenschaftswert für das zweite Steuerelement so ändern, dass es mit dem des ersten Steuerelements übereinstimmt, und dann erneut die Seite ausführen, wird auch das zweite Steuerelement hinzugefügt.
Hinweise
Die IsAuthorized(Type, String, String, Boolean) Überladungsmethode führt die letzten Schritte aus, um zu bestimmen, ob ein Steuerelement autorisiert ist, einer Seite hinzuzufügen. Die Methode stellt sicher, dass es type sich um einen gültigen Typ handelt und path nur dann einen Wert aufweist, wenn das zu überprüfende Steuerelement ein Benutzersteuerelement ist. Anschließend wird die kritische OnAuthorizeWebPart Methode aufgerufen, die das AuthorizeWebPart Ereignis auslöst.
Hinweise für Vererber
Diese Methode kann durch Erben von der Klasse überschrieben werden, wenn Sie beim Überprüfen der WebPartManager Autorisierung zusätzliche Behandlung bereitstellen möchten. Möglicherweise möchten Sie die Methode außer Kraft setzen, um nach bestimmten Werten im authorizationFilter Parameter zu suchen und basierend auf dem Wert einen booleschen Wert zurückzugeben, der bestimmt, ob das Steuerelement einer Seite hinzugefügt wird.
Für Seitenentwickler, die auch nach Autorisierungsfiltern suchen und eine benutzerdefinierte Behandlung bereitstellen möchten, gibt es eine Option für diese Inlinefunktion in einer .aspx-Seite oder in einer CodeBehind-Datei, ohne von Klassen erben zu müssen. Sie können einen alternativen Ereignishandler auf der Seite für die OnAuthorizeWebPart(WebPartAuthorizationEventArgs) Methode des WebPartManager Steuerelements deklarieren. Weitere Details und ein Beispiel finden Sie in der OnAuthorizeWebPart(WebPartAuthorizationEventArgs) Methode.
Weitere Informationen
- AuthorizationFilter
- AuthorizeWebPart
- OnAuthorizeWebPart(WebPartAuthorizationEventArgs)
- ASP.NET Webpart-Steuerelemente