WebPartManager.IsAuthorized Metodo

Definizione

Determina se un controllo WebPart o un altro controllo server può essere aggiunto a una pagina.Determines whether a WebPart or other server control can be added to a page.

Overload

IsAuthorized(WebPart)

Esegue i passaggi iniziali della procedura di determinazione delle autorizzazioni per un controllo da aggiungere a una pagina.Carries out the initial steps in determining whether a control is authorized to be added to a page.

IsAuthorized(Type, String, String, Boolean)

Esegue i passaggi finali della procedura di determinazione delle autorizzazioni per un controllo da aggiungere a una pagina.Carries out the final steps in determining whether a control is authorized to be added to a page.

Commenti

Parte della flessibilità della funzionalità Web part è la possibilità di aggiungere controlli server a pagine Web in fase di esecuzione.Part of the flexibility of the Web Parts feature is the ability to add server controls to Web pages at run time. Sono disponibili diversi scenari comuni in cui è possibile aggiungere un controllo server, che può essere un WebPart controllo personalizzato, un controllo server personalizzato, un controllo utente o un controllo ASP.NET.There are a number of common scenarios in which a server control (which can be a custom WebPart control, a custom server control, a user control, or an ASP.NET control) can be added.

Negli scenari comuni seguenti, il set di controllo Web part tenta di aggiungere controlli server a una pagina e viene chiamato IsAuthorized il metodo per autorizzarli:In the following common scenarios, the Web Parts control set attempts to add server controls to a page, and the IsAuthorized method is called to authorize them:

  • Quando un controllo server viene aggiunto dichiarando l'oggetto nel markup di una pagina Web all'interno WebPartZoneBase di una zona.When a server control is added by declaring it in the markup of a Web page within a WebPartZoneBase zone.

  • Quando un controllo server viene aggiunto a livello di codice a una zona.When a server control is added programmatically to a zone.

  • Quando un utente importa un controllo server in un Web part catalogo di controlli.When a user imports a server control into a Web Parts catalog of controls.

  • Quando un controllo server esistente viene caricato dall'archivio dati di personalizzazione.When an existing server control is loaded from the personalization data store.

  • Quando un controllo server viene aggiunto a un DeclarativeCatalogPart controllo per renderlo disponibile in un catalogo di controlli server.When a server control is added to a DeclarativeCatalogPart control to make it available in a catalog of server controls.

In ogni scenario in cui vengono aggiunti i controlli IsAuthorized , viene chiamato il metodo per garantire che siano stati soddisfatti tutti i criteri di autorizzazione per consentire l'aggiunta di un controllo.In each scenario where controls are added, the IsAuthorized method is called to ensure that all authorization criteria have been met to allow a control to be added. Quando un controllo è autorizzato, viene aggiunto normalmente come se non si trattasse di uno scenario di filtro.When a control is authorized, it is added normally as it would be if there was no filtering scenario. Quando un controllo non è autorizzato, il set di controllo Web part può rispondere in diversi modi, a seconda del contesto.When a control is not authorized, the Web Parts control set can respond in several ways, depending on the context. Il set di controlli può non riuscire automaticamente ad aggiungere una parte non autorizzata (se non è necessario informare l'utente), è possibile che venga visualizzato un messaggio di errore oppure che sia possibile aggiungere un' UnauthorizedWebPart istanza della classe come segnaposto.The control set can silently fail to add an unauthorized part (if there is no need to inform the user), it can display an error message, or it can add an instance of the UnauthorizedWebPart class as a placeholder. Questo oggetto segnaposto non è visibile nella pagina, ma è visibile nel codice sorgente della pagina per indicare che un controllo non autorizzato è stato escluso.This placeholder object is not visible on the page, but is visible in the page source code to indicate that an unauthorized control was excluded.

Determina se un controllo è autorizzato è il filtro di autorizzazione.The determinant of whether a control is authorized is the authorization filter. Un filtro di autorizzazione è una funzionalità del set di controllo Web part che consente agli sviluppatori di escludere da una pagina tutti i controlli che non soddisfano i criteri specificati.An authorization filter is a feature in the Web Parts control set that enables developers to exclude from a page any controls that do not meet the specified criteria.

Per creare uno scenario di filtro, gli sviluppatori devono eseguire due operazioni.To create a filtering scenario, developers must do two things. Per prima cosa, è necessario assegnare un valore stringa (il valore può essere arbitrario) AuthorizationFilter alla proprietà di WebPart ogni controllo che si intende utilizzare nello scenario.First, they must assign a string value (the value can be arbitrary) to the AuthorizationFilter property of each WebPart control they plan to use in the scenario. Possono inoltre assegnare un valore a questa proprietà per altri tipi di controlli server che non WebPart sono controlli, perché se vengono posizionati in WebPartZoneBase zone, tali controlli vengono inclusi in un GenericWebPart controllo in fase di esecuzione e questo controllo eredita AuthorizationFilter proprietà.They can also assign a value to this property for other types of server controls that are not WebPart controls, because if they are placed in WebPartZoneBase zones, such controls are wrapped with a GenericWebPart control at run time, and this control inherits the AuthorizationFilter property.

Il secondo passaggio necessario per la creazione di uno scenario di filtro consiste nell' IsAuthorized(Type, String, String, Boolean) eseguire l'override del metodo oppure creare un gestore eventi AuthorizeWebPart per l'evento.The second necessary step for creating a filtering scenario is to either override the IsAuthorized(Type, String, String, Boolean) method, or to create an event handler for the AuthorizeWebPart event. In questi metodi, uno sviluppatore può controllare la AuthorizationFilter proprietà e, se il valore indica che il controllo non deve essere autorizzato, lo sviluppatore garantisce che il IsAuthorized metodo restituisca un valore falsedi.In these methods, a developer can check the AuthorizationFilter property, and if the value indicates that the control should not be authorized, the developer ensures that the IsAuthorized method returns a value of false.

Nota

Per esempi di codice e una descrizione di come configurare uno scenario di filtro personalizzato usando il IsAuthorized metodo, vedere gli argomenti per gli overload del metodo.For code examples and a description of how to set up a customized filtering scenario using the IsAuthorized method, see the topics for the overloads of the method.

IsAuthorized(WebPart)

Esegue i passaggi iniziali della procedura di determinazione delle autorizzazioni per un controllo da aggiungere a una pagina.Carries out the initial steps in determining whether a control is authorized to be added to a page.

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

Parametri

webPart
WebPart

Controllo WebPart o un altro controllo server di cui vengono verificate le autorizzazioni.A WebPart or other server control being checked for authorization.

Restituisce

Valore Boolean che indica se è possibile aggiungere webPart a una pagina.A Boolean value that indicates whether webPart can be added to a page.

Eccezioni

webPart è null.webPart is null.

Esempio

Nell'esempio di codice seguente viene illustrato come chiamare IsAuthorized(WebPart) il metodo dal codice per determinare se un controllo è autorizzato a essere aggiunto a una pagina.The following code example demonstrates how to call the IsAuthorized(WebPart) method from your code to determine whether a control is authorized to be added to a page.

L'esempio di codice è costituito da tre parti:The code example has three parts:

  • Controllo personalizzato WebPartManager che esegue l'override IsAuthorized del metodo.A custom WebPartManager control that overrides the IsAuthorized method.

  • Pagina Web che crea un filtro per un WebPart controllo.A Web page that creates a filter for a WebPart control.

  • Una spiegazione su come eseguire l'esempio di codice.An explanation of how to run the code example.

In questo esempio di codice viene WebPartManager usato un controllo personalizzato IsAuthorized(Type, String, String, Boolean) che esegue l'override del metodo di overload AuthorizationFilter per fornire la gestione personalizzata della proprietà.This code example uses a custom WebPartManager control that overrides the IsAuthorized(Type, String, String, Boolean) overload method to provide custom handling of the AuthorizationFilter property. Questo controllo Controlla la presenza di un valore admin di proprietà di e, se il valore è presente, autorizza il controllo.This control checks for a property value of admin and, if the value is present, authorizes the control. Se un controllo ha un valore diverso, non è autorizzato. anche i controlli senza il valore della proprietà sono autorizzati, perché si presume che non facciano parte dello scenario di filtro.If a control has a different value, it is not authorized; controls without the property value are authorized as well, as they are presumed not to be part of the filtering scenario.

Per eseguire questo esempio di codice, è necessario compilare questo codice sorgente.For this code example to run, you must compile this source code. È possibile compilarlo in modo esplicito e inserire l'assembly risultante nella cartella bin del sito Web o nel Global Assembly Cache.You can compile it explicitly and put the resulting assembly in your Web site's Bin folder or the global assembly cache. In alternativa, è possibile inserire il codice sorgente nella cartella App_Code del sito, in cui verrà compilato dinamicamente in fase di esecuzione.Alternatively, you can put the source code in your site's App_Code folder, where it will be dynamically compiled at run time. Questo esempio di codice usa il metodo di compilazione dinamica.This code example uses the dynamic compile method. Per una procedura dettagliata che illustra come eseguire la compilazione , vedere Procedura dettagliata: Sviluppo e utilizzo di un controlloserver Web personalizzato.For a walkthrough that demonstrates how to compile, see 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

Nella seconda parte dell'esempio di codice viene creato un filtro che può potenzialmente escludere un controllo.The second part of the code example creates a filter that can potentially exclude a control. La pagina Web seguente contiene tre controlli server ASP.NET in un <asp:webpartzone> elemento.The following Web page contains three ASP.NET server controls in an <asp:webpartzone> element. Si noti che le AuthorizationFilter proprietà del primo e del secondo controllo sono impostate su valori diversi e la terza non assegna la proprietà.Notice that the first and second controls have their AuthorizationFilter properties set to different values, and the third does not assign the property. Questo valore di autorizzazione può essere controllato in fase di esecuzione e il controllo può essere aggiunto alla pagina se il filtro corrisponde ai criteri impostati dallo sviluppatore.This authorization value can be checked at run time, and the control can be added to the page if the filter matches criteria set by the developer. Si noti inoltre che nel Page_Load metodo, il codice chiama il IsAuthorized(WebPart) metodo per determinare se ogni controllo è autorizzato e, in tal caso, imposta la proprietàdiognicontrollo.ExportModeNotice also that in the Page_Load method, the code calls the IsAuthorized(WebPart) method to determine whether each of the controls is authorized, and if so, it sets each control's ExportMode property.

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

Si noti che per il corretto funzionamento dell'esempio di codice, è necessario aggiungere un'impostazione nel file Web. config per abilitare l'esportazione dei file di descrizione Web part.Note that for the code example to work, you must add a setting in the Web.config file to enable exporting Web Parts description files. Assicurarsi di disporre di un file Web. config nella stessa directory della pagina Web per questo esempio di codice.Ensure that you have a Web.config file in the same directory as the Web page for this code example. All'interno <system.web> della sezione, verificare che sia presente <webParts> un elemento con enableExport un attributo impostato truesu, come nel markup seguente.Within the <system.web> section, make sure there is a <webParts> element with an enableExport attribute set to true, as in the following markup.

<webParts enableExport="true">

...

</webParts>

Una volta caricata la pagina in un browser, si noti che viene visualizzato il primo controllo, perché corrisponde ai criteri nel metodo sottoposto a override.After you load the page in a browser, note that the first control is displayed, because it matches the criteria in the overridden method. Il secondo controllo non viene aggiunto alla pagina, perché è escluso dal filtro.The second control is not added to the page, because it is excluded by the filter. Viene inoltre aggiunto il terzo controllo, perché la AuthorizationFilter proprietà non è impostata.The third control is also added, because it does not have its AuthorizationFilter property set. Si noti che se si fa clic sull'icona del menu dei verbi nella barra del titolo di uno dei due controlli, è possibile esportarli entrambi perché sono stati assegnati i rispettivi ExportMode valori di proprietà.Notice that if you click the verbs menu icon in the title bar of either control, they can both be exported because their respective ExportMode property values were assigned.

Commenti

Il IsAuthorized metodo è il metodo iniziale chiamato dall'Web part set di controlli per verificare l'autorizzazione per WebPart un controllo.The IsAuthorized method is the initial method called by the Web Parts control set to check authorization for a WebPart control. Accetta webPart come parametro e avvia un processo che determina in definitiva se il controllo verrà aggiunto a una pagina.It accepts webPart as a parameter, and begins a process that ultimately determines whether the control will be added to a page. Chiamare direttamente questo metodo dal codice quando è necessario determinare se un determinato controllo è autorizzato.Call this method from your code directly when you need to determine whether a given control is authorized.

Questo metodo esegue le attività iniziali per determinare se il controllo eredita dalla WebPart classe o è un GenericWebPart controllo e, in caso affermativo, il tipo di controllo figlio che contiene.This method carries out the initial tasks of determining whether the control inherits from the WebPart class or is a GenericWebPart control and, if so, what type of child control it contains. Per completare l'attività di autorizzazione, viene chiamato il IsAuthorized(Type, String, String, Boolean) metodo di overload.To finish the task of authorization, it calls the IsAuthorized(Type, String, String, Boolean) overload method.

Note per i chiamanti

Questo metodo viene chiamato direttamente dal codice.This method is called directly from your code. Se si desidera ottenere un maggiore controllo a livello di codice sul processo di autorizzazione, è IsAuthorized(Type, String, String, Boolean) possibile eseguire l'override del metodo di overload.If you want to gain greater programmatic control over the authorization process, you can override the IsAuthorized(Type, String, String, Boolean) overload method.

Vedi anche

IsAuthorized(Type, String, String, Boolean)

Esegue i passaggi finali della procedura di determinazione delle autorizzazioni per un controllo da aggiungere a una pagina.Carries out the final steps in determining whether a control is authorized to be added to a page.

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

Parametri

type
Type

Oggetto Type del controllo per cui viene verificata l'autorizzazione.The Type of the control being checked for authorization.

path
String

Percorso applicazione relativo del file di origine per il controllo di cui è in corso l'autorizzazione, se si tratta di un controllo utente.The relative application path to the source file for the control being authorized, if the control is a user control.

authorizationFilter
String

Valore di stringa arbitrario assegnato alla proprietà AuthorizationFilter di un controllo WebPart, utilizzato per verificare se un controllo può essere aggiunto a una pagina.An arbitrary string value assigned to the AuthorizationFilter property of a WebPart control, used to authorize whether a control can be added to a page.

isShared
Boolean

Indica se il controllo di cui viene verificata l'autorizzazione è un controllo condiviso, ovvero è visibile a molti o tutti gli utenti dell'applicazione e il valore della relativa proprietà IsShared è impostato su true.Indicates whether the control being checked for authorization is a shared control, meaning that it is visible to many or all users of the application, and its IsShared property value is set to true.

Restituisce

Valore Boolean che indica se un controllo dispone dell'autorizzazione all'aggiunta a una pagina.A Boolean value that indicates whether a control is authorized to be added to a page.

Eccezioni

type è null.type is null.

type è un controllo utente e path è null o una stringa vuota ("").type is a user control, and path is either null or an empty string ("").

-oppure--or- type non è un controllo utente e a path è assegnato un valore.type is not a user control, and path has a value assigned to it.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato IsAuthorized come eseguire l'override del metodo per determinare se un controllo è autorizzato a essere aggiunto a una pagina.The following code example demonstrates how to override the IsAuthorized method to determine whether a control is authorized to be added to a page.

Il primo passaggio consiste nel creare un filtro che potenzialmente possa escludere un controllo.The first step is to create a filter that can potentially exclude a control. La pagina Web seguente contiene tre controlli server ASP.NET in un <asp:webpartzone> elemento.The following Web page contains three ASP.NET server controls in an <asp:webpartzone> element. Si noti che le AuthorizationFilter proprietà del primo e del secondo controllo sono impostate su valori diversi e la terza non assegna la proprietà.Notice that the first and second controls have their AuthorizationFilter properties set to different values, and the third does not assign the property. Questo valore di autorizzazione può essere controllato in fase di esecuzione e il controllo può essere aggiunto alla pagina se il filtro corrisponde ai criteri impostati dallo sviluppatore.This authorization value can be checked at run time, and the control can be added to the page if the filter matches criteria set by the developer.

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

Il secondo passaggio consiste nell'eseguire l' IsAuthorized(Type, String, String, Boolean) override del metodo e creare la gestione personalizzata per i filtri di autorizzazione.The second step is to override the IsAuthorized(Type, String, String, Boolean) method, and create custom handling for authorization filters. Si noti che il codice controlla prima di tutto se la proprietà ha un valore, in modo che qualsiasi controllo che AuthorizationFilter non assegna la proprietà venga aggiunto automaticamente.Note that the code first checks whether the property has a value, so that any control that does not assign the AuthorizationFilter property will be added automatically. Se un controllo dispone di un filtro, il codice true viene restituito solo se il valore del filtro adminè uguale a.If a control has a filter, the code returns true only if the filter value is equal to admin. In questo esempio viene illustrato un meccanismo semplice che è possibile utilizzare per visualizzare determinati controlli per determinati utenti, a seconda del ruolo.This demonstrates a simple mechanism you can use for displaying certain controls to certain users, depending on their role. Mentre un esempio completo che usa i ruoli esula dall'ambito di questo argomento, è possibile usare la stessa logica del metodo sottoposto a override in questo esempio di codice, ad eccezione del fatto che è possibile verificare se l'utente corrente si trova in un ruolo che corrisponde al valore del filtro di autorizzazione , quindi aggiungere il controllo solo per tale utente.While a full example using roles is beyond the scope of this topic, you could use the same logic as the overridden method in this code example, except that you could check whether the current user is in a role that matches the authorization filter value, and then add the control only for that user. Ciò consente di creare pagine in cui alcuni utenti vedranno tutti i controlli e gli altri utenti vedranno solo i controlli selezionati.This would enable you to create pages where some users would see all the controls, and other users would see only selected controls. Questo è il modo in cui la logica che controlla il filtro potrebbe controllare se sono stati usati i ruoli:This is how the logic that checks the filter might look if you used roles:

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;  

Per eseguire l'esempio di codice, è necessario compilare questo codice sorgente.For the code example to run, you must compile this source code. È possibile compilarlo in modo esplicito e inserire l'assembly risultante nella cartella bin del sito Web o nel Global Assembly Cache.You can compile it explicitly and put the resulting assembly in your Web site's Bin folder or the global assembly cache. In alternativa, è possibile inserire il codice sorgente nella cartella App_Code del sito, in cui verrà compilato dinamicamente in fase di esecuzione.Alternatively, you can put the source code in your site's App_Code folder, where it will be dynamically compiled at run time. Questo esempio di codice usa il metodo di compilazione dinamica.This code example uses the dynamic compile method. Per una procedura dettagliata che illustra come eseguire la compilazione , vedere Procedura dettagliata: Sviluppo e utilizzo di un controlloserver Web personalizzato.For a walkthrough that demonstrates how to compile, see 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

Una volta caricata la pagina in un browser, si noti che viene visualizzato il primo controllo, perché corrisponde ai criteri nel metodo sottoposto a override.After you load the page in a browser, note that the first control is displayed, because it matches the criteria in the overridden method. Il secondo controllo non viene aggiunto alla pagina, perché il relativo valore di filtro è escluso.The second control is not added to the page, because its filter value is excluded. Il terzo controllo viene aggiunto, perché la AuthorizationFilter proprietà non è impostata.The third control is added, because it does not have its AuthorizationFilter property set. Se si modifica il valore della proprietà nel secondo controllo in modo che corrisponda a quello del primo controllo, quindi si esegue di nuovo la pagina, viene aggiunto anche il secondo controllo.If you change the property value on the second control to match that of the first control, and then run the page again, the second control is added as well.

Commenti

Il IsAuthorized(Type, String, String, Boolean) metodo di overload esegue i passaggi finali per determinare se un controllo è autorizzato a essere aggiunto a una pagina.The IsAuthorized(Type, String, String, Boolean) overload method carries out the final steps in determining whether a control is authorized to be added to a page. Il metodo garantisce che type sia un tipo valido e che path abbia un valore solo se il controllo da controllare è un controllo utente.The method ensures that type is a valid type, and that path has a value only if the control being checked is a user control. Chiama quindi il metodo critico OnAuthorizeWebPart , che genera l' AuthorizeWebPart evento.Then it calls the critical OnAuthorizeWebPart method, which raises the AuthorizeWebPart event.

Note per gli eredi

È possibile eseguire l'override di questo metodo ereditando dalla WebPartManager classe, se si desidera fornire una gestione aggiuntiva durante il controllo dell'autorizzazione.This method can be overridden by inheriting from the WebPartManager class, if you want to provide additional handling when checking authorization. Potrebbe essere necessario eseguire l'override del metodo per verificare la presenza di determinati authorizationFilter valori nel parametro e, in base al valore, restituire un valore booleano che determina se il controllo verrà aggiunto a una pagina.You might want to override the method to check for certain values in the authorizationFilter parameter, and based on the value, return a Boolean value that determines whether the control will be added to a page.

Per gli sviluppatori di pagine che desiderano verificare anche i filtri di autorizzazione e fornire la gestione personalizzata, è disponibile un'opzione per eseguire questa operazione inline in una pagina aspx o in un file code-behind senza che sia necessario ereditare da alcuna classe.For page developers who also want to check for authorization filters and provide custom handling, there is an option for doing this inline in an .aspx page, or in a code-behind file, without having to inherit from any classes. È possibile dichiarare un gestore eventi alternativo nella pagina per il OnAuthorizeWebPart(WebPartAuthorizationEventArgs) metodo WebPartManager del controllo.You can declare an alternate event handler in the page for the OnAuthorizeWebPart(WebPartAuthorizationEventArgs) method of the WebPartManager control. Per altri dettagli e un esempio, vedere il OnAuthorizeWebPart(WebPartAuthorizationEventArgs) metodo.For more details and an example, see the OnAuthorizeWebPart(WebPartAuthorizationEventArgs) method.

Vedi anche

Si applica a