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-Steuerelement oder ein anderes Serversteuerelement hinzugefügt werden kann.
Überlädt
IsAuthorized(WebPart) |
Führt die ersten Schritte des Prozesses aus, mit dem bestimmt wird, ob für das Steuerelement eine Autorisierung vorhanden ist und es einer Seite hinzugefügt werden darf. |
IsAuthorized(Type, String, String, Boolean) |
Führt die letzten Schritte des Prozesses aus, mit dem bestimmt wird, ob für das Steuerelement eine Autorisierung vorhanden ist und es einer Seite hinzugefügt werden darf. |
Hinweise
Ein Teil der Flexibilität des Webpartfeatures ist die Möglichkeit, Webseiten zur Laufzeit Serversteuerelemente hinzuzufügen. Es gibt eine Reihe gängiger Szenarien, in denen ein Serversteuerelement (das ein benutzerdefiniertes WebPart Steuerelement, ein benutzerdefiniertes Serversteuerelement, ein Benutzersteuerelement oder ein ASP.NET-Steuerelement sein kann) hinzugefügt werden kann.
In den folgenden häufigen Szenarien versucht der Webpart-Steuerelementsatz, 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 mit Steuerelementen importiert.
Wenn ein vorhandenes Serversteuerelement aus dem Personalisierungsdatenspeicher geladen wird.
Wenn einem Steuerelement ein Serversteuerelement hinzugefügt DeclarativeCatalogPart 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, um das Hinzufügen eines Steuerelements zu ermöglichen. Wenn ein Steuerelement autorisiert ist, wird es normal hinzugefügt, wie es wäre, wenn es kein Filterszenario gäbe. Wenn ein Steuerelement nicht autorisiert ist, kann der Webparts-Steuerelementsatz je nach Kontext auf verschiedene Arten reagieren. Der Steuerelementsatz kann ein nicht autorisiertes Teil im Hintergrund nicht hinzufügen (wenn es nicht erforderlich ist, den Benutzer darüber zu informieren), es kann eine Fehlermeldung anzeigen oder eine Instanz der UnauthorizedWebPart -Klasse als Platzhalter hinzufügen. Dieses Platzhalterobjekt ist auf der Seite nicht sichtbar, 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 Webparts-Steuerelementsatz, mit dem Entwickler alle Steuerelemente von einer Seite ausschließen können, die die angegebenen Kriterien nicht erfüllen.
Um ein Filterszenario zu erstellen, müssen Entwickler zwei Dinge tun. Zunächst müssen sie der AuthorizationFilter Eigenschaft jedes WebPart Steuerelements, das im Szenario verwendet werden soll, einen Zeichenfolgenwert zuweisen (der Wert kann beliebig sein). Sie können dieser Eigenschaft auch einen Wert für andere Typen von Serversteuerelementen zuweisen, bei denen es sich nicht WebPart um Steuerelemente handelt. Wenn sie in WebPartZoneBase Zonen platziert werden, werden diese 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, entweder die IsAuthorized(Type, String, String, Boolean) -Methode zu überschreiben oder einen Ereignishandler für das AuthorizeWebPart Ereignis zu erstellen. In diesen Methoden kann ein Entwickler die AuthorizationFilter -Eigenschaft überprüfen. Wenn der Wert angibt, dass das Steuerelement nicht autorisiert werden soll, stellt der Entwickler sicher, dass die IsAuthorized -Methode den Wert zurückgibt false
.
Hinweis
Codebeispiele und eine Beschreibung der Einrichtung eines benutzerdefinierten Filterszenarios mithilfe der IsAuthorized -Methode finden Sie in den Themen zu den Überladungen der -Methode.
IsAuthorized(WebPart)
Führt die ersten Schritte des Prozesses aus, mit dem bestimmt wird, ob für das Steuerelement eine Autorisierung vorhanden ist und es einer Seite hinzugefügt werden darf.
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-Steuerelement oder ein anderes Serversteuerelement, dessen Autorisierung geprü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 Sie die IsAuthorized(WebPart) -Methode aus Ihrem Code aufrufen, um zu bestimmen, ob ein Steuerelement für das Hinzufügen zu einer Seite autorisiert ist.
Das Codebeispiel umfasst 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 Erklärung zum Ausführen des Codebeispiels.
In diesem Codebeispiel wird ein benutzerdefiniertes WebPartManager Steuerelement verwendet, das die IsAuthorized(Type, String, String, Boolean) Überladungsmethode außer Kraft setzt, um eine benutzerdefinierte Behandlung der AuthorizationFilter Eigenschaft bereitzustellen. Dieses Steuerelement überprüft auf einen Eigenschaftswert von admin
und autorisiert das Steuerelement, wenn der Wert vorhanden ist. Wenn ein Steuerelement einen anderen Wert aufweist, ist es nicht autorisiert. Steuerelemente ohne Den -Eigenschaftswert werden 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, wo er zur Laufzeit dynamisch kompiliert wird. In diesem Codebeispiel wird die dynamische Kompilierungsmethode verwendet. Eine exemplarische Vorgehensweise, die das Kompilieren veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Webserversteuerelements.
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
Im zweiten Teil des Codebeispiels wird ein Filter erstellt, der möglicherweise ein Steuerelement ausschließen kann. Die folgende Webseite enthält drei ASP.NET Serversteuerelemente in einem <asp:webpartzone>
Element. Beachten Sie, dass die Eigenschaften des ersten und zweiten Steuerelements AuthorizationFilter auf unterschiedliche Werte festgelegt sind und das dritte die -Eigenschaft nicht zuweisen. 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 außerdem, dass in der Page_Load
-Methode der Code die IsAuthorized(WebPart) -Methode aufruft, um zu bestimmen, ob die einzelnen Steuerelemente autorisiert sind. 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 in der Web.config-Datei eine Einstellung hinzufügen müssen, damit das Codebeispiel funktioniert, um den Export von Webparts-Beschreibungsdateien zu ermöglichen. Stellen Sie sicher, dass Sich eine Web.config Datei im selben Verzeichnis wie die Webseite für dieses Codebeispiel befindet.
<system.web>
Stellen Sie im Abschnitt sicher, dass ein Element mit einem enableExport
Attribut auf true
festgelegt ist<webParts>
, wie im folgenden Markup.
<webParts enableExport="true">
...
</webParts>
Nachdem Sie die Seite in einem Browser geladen haben, beachten Sie, 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 seine AuthorizationFilter Eigenschaft nicht festgelegt ist. Beachten Sie, dass beim Klicken auf das Menüsymbol für Verben in der Titelleiste eines der beiden Steuerelemente beide exportiert werden können, da ihre jeweiligen ExportMode Eigenschaftswerte zugewiesen wurden.
Hinweise
Die IsAuthorized -Methode ist die anfängliche Methode, die vom Webpart-Steuerelementsatz aufgerufen wird, um die Autorisierung für ein WebPart Steuerelement zu überprüfen. Sie akzeptiert webPart
als Parameter und startet 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, falls ja, welchen Typ des untergeordneten Steuerelements es enthält. Um die Aufgabe der Autorisierung abzuschließen, ruft sie die IsAuthorized(Type, String, String, Boolean) Überladungsmethode auf.
Hinweise für Aufrufer
Diese Methode wird direkt aus Ihrem 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 überschreiben.
Weitere Informationen
- AuthorizationFilter
- AuthorizeWebPart
- OnAuthorizeWebPart(WebPartAuthorizationEventArgs)
- ASP.NET Webpart-Steuerelemente
Gilt für:
IsAuthorized(Type, String, String, Boolean)
Führt die letzten Schritte des Prozesses aus, mit dem bestimmt wird, ob für das Steuerelement eine Autorisierung vorhanden ist und es einer Seite hinzugefügt werden darf.
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 des Steuerelements, das autorisiert wird, sofern das Steuerelement ein Benutzersteuerelement ist.
- authorizationFilter
- String
Der AuthorizationFilter-Eigenschaft des WebPart-Steuerelements wird ein beliebiger Zeichenfolgenwert zugewiesen, der verwendet wird, um zu prüfen, ob für ein Steuerelement eine Autorisierung vorhanden ist und es einer Seite hinzugefügt werden darf.
- isShared
- Boolean
Gibt an, ob das zur Autorisierung überprüfte Steuerelement freigegeben ist, d. h., ob es für alle Benutzer einer Anwendung sichtbar ist und ob dessen IsShared-Eigenschaftswert auf true
festgelegt ist.
Gibt zurück
Ein boolescher Wert, der angibt, ob für ein Steuerelement eine Autorisierung vorhanden ist und es einer Seite hinzugefügt werden darf.
Ausnahmen
type
ist null
.
type
ist ein Benutzersteuerelement, und path
ist entweder null
oder eine leere Zeichenfolge ("").
- oder -
type
ist kein Benutzersteuerelement, und path
ist ein Wert zugewiesen.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die IsAuthorized -Methode überschrieben wird, um zu bestimmen, ob ein Steuerelement für das Hinzufügen zu einer Seite autorisiert ist.
Der erste Schritt besteht darin, einen Filter zu erstellen, der möglicherweise ein Steuerelement ausschließen kann. Die folgende Webseite enthält drei ASP.NET Serversteuerelemente in einem <asp:webpartzone>
Element. Beachten Sie, dass die Eigenschaften des ersten und zweiten Steuerelements AuthorizationFilter auf unterschiedliche Werte festgelegt sind und das dritte die -Eigenschaft nicht zuweisen. 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 zu überschreiben und benutzerdefinierte Behandlung für Autorisierungsfilter zu erstellen. Beachten Sie, dass der Code zuerst überprüft, ob die Eigenschaft über einen Wert verfügt, sodass jedes Steuerelement, das die AuthorizationFilter Eigenschaft nicht zuweist, automatisch hinzugefügt wird. Wenn ein Steuerelement über einen Filter verfügt, gibt der Code nur zurück true
, wenn der Filterwert gleich admin
ist. Dies veranschaulicht einen einfachen Mechanismus, den Sie zum Anzeigen bestimmter Steuerelemente für bestimmte Benutzer verwenden können, abhängig von ihrer Rolle. Während ein vollständiges Beispiel mit Rollen den Bereich dieses Themas sprengt, 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 das Steuerelement dann 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 anderen Benutzern würden nur ausgewählte Steuerelemente angezeigt. So könnte die Logik zum Überprüfen des Filters aussehen, 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, wo er zur Laufzeit dynamisch kompiliert wird. In diesem Codebeispiel wird die dynamische Kompilierungsmethode verwendet. Eine exemplarische Vorgehensweise, die das Kompilieren veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Webserversteuerelements.
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
Nachdem Sie die Seite in einem Browser geladen haben, beachten Sie, 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 sein Filterwert ausgeschlossen ist. Das dritte Steuerelement wird hinzugefügt, da seine AuthorizationFilter Eigenschaft nicht festgelegt ist. Wenn Sie den Eigenschaftswert für das zweite Steuerelement so ändern, dass er dem des ersten Steuerelements entspricht, und die Seite dann erneut 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 für das Hinzufügen zu einer Seite autorisiert ist. Die -Methode stellt sicher, dass type
path
es sich um einen gültigen Typ handelt, der nur dann über einen Wert verfügt, wenn es sich bei dem überprüften Steuerelement um ein Benutzersteuerelement handelt. Anschließend wird die kritische OnAuthorizeWebPart Methode aufgerufen, die das AuthorizeWebPart Ereignis auslöst.
Hinweise für Vererber
Diese Methode kann überschrieben werden, indem Sie von der -Klasse erben, wenn Sie beim Überprüfen der WebPartManager Autorisierung zusätzliche Behandlung bereitstellen möchten. Möglicherweise möchten Sie die -Methode überschreiben, um bestimmte Werte im authorizationFilter
Parameter zu überprüfen, und basierend auf dem Wert einen booleschen Wert zurückgeben, der bestimmt, ob das Steuerelement einer Seite hinzugefügt wird.
Für Seitenentwickler, die auch nach Autorisierungsfiltern suchen und benutzerdefinierte Behandlung bereitstellen möchten, gibt es eine Option, diese Inline in einer .aspx Seite oder in einer CodeBehind-Datei durchzuführen, ohne von klassen erben zu müssen. Sie können einen alternativen Ereignishandler auf der Seite für die OnAuthorizeWebPart(WebPartAuthorizationEventArgs) -Methode des Steuerelements WebPartManager deklarieren. Weitere Details und ein Beispiel finden Sie in der OnAuthorizeWebPart(WebPartAuthorizationEventArgs) -Methode.
Weitere Informationen
- AuthorizationFilter
- AuthorizeWebPart
- OnAuthorizeWebPart(WebPartAuthorizationEventArgs)
- ASP.NET Webpart-Steuerelemente