WebPartManager.OnAuthorizeWebPart(WebPartAuthorizationEventArgs) Metodo

Definizione

Genera l'evento AuthorizeWebPart e richiama un gestore per l'evento, se presente.Raises the AuthorizeWebPart event and invokes a handler for the event, if one exists.

protected:
 virtual void OnAuthorizeWebPart(System::Web::UI::WebControls::WebParts::WebPartAuthorizationEventArgs ^ e);
protected virtual void OnAuthorizeWebPart (System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs e);
abstract member OnAuthorizeWebPart : System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs -> unit
override this.OnAuthorizeWebPart : System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs -> unit
Protected Overridable Sub OnAuthorizeWebPart (e As WebPartAuthorizationEventArgs)

Parametri

e
WebPartAuthorizationEventArgs

WebPartAuthorizationEventArgs in cui sono contenuti i dati dell'evento.A WebPartAuthorizationEventArgs that contains event data.

Esempi

Nell'esempio di codice riportato di seguito viene illustrato come impostare un gestore eventi AuthorizeWebPart personalizzato per l'evento, in modo che il gestore possa fornire codice OnAuthorizeWebPart di filtro personalizzato per il metodo.The following code example demonstrates how to set a custom event handler for the AuthorizeWebPart event, so that the handler can provide custom filtering code for the OnAuthorizeWebPart method. Questo esempio è un modo tipico per uno sviluppatore di pagine di fornire uno scenario di filtro e l' WebPart autorizzazione dei controlli da aggiungere a una pagina.This example would be a typical way for a page developer to provide a filtering scenario and authorization of WebPart controls to be added to a page.

Nella pagina Web si noti che l' <asp:webpartmanager> elemento ha l' OnAuthorizeWebPart attributo con il nome del gestore eventi assegnato.In the Web page, notice that the <asp:webpartmanager> element has the OnAuthorizeWebPart attribute with the name of the event handler assigned to it. Il metodo controlla se i controlli nella pagina hanno i rispettivi AuthorizationFilter valori di admin proprietà impostati su e, in caso affermativo true, restituisce, il che significa che saranno autorizzati e aggiunti alla pagina.The method checks whether the controls on the page have their respective AuthorizationFilter property values set to admin and, if so, returns true, which means that they will be authorized and added to the page.

Nota

Si noti che anche i AuthorizationFilter controlli che non hanno alcun valore assegnato alla proprietà vengono aggiunti, perché si presuppone che non facciano parte di uno scenario di filtro.Note that controls that do not have any value assigned to the AuthorizationFilter property are added as well, because they are assumed not to be part of a filtering scenario. Si tratta di un approccio comune in uno scenario di filtro: alcuni controlli verrebbero filtrati e altri non sarebbero, perché si presume che siano disponibili per tutti gli utenti.This would be a common approach in a filtering scenario: some controls would be filtered, and others would not be, because they are presumed to be available for all users.

<%@ Page Language="C#" %>

<!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 mgr1_AuthorizeWebPart(object sender, 
    WebPartAuthorizationEventArgs e)
  {
    if (!String.IsNullOrEmpty(e.AuthorizationFilter))
    {
      if (e.AuthorizationFilter == "user")
        e.IsAuthorized = true;
      else
        e.IsAuthorized = false;
    }
  }
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr1" runat="server"
        OnAuthorizeWebPart="mgr1_AuthorizeWebPart" />
      <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"
            Title="Filter Test"
            AuthorizationFilter="admin" />
          <asp:Calendar ID="Calendar1" runat="server" 
            Title="My Calendar"/>
        </ZoneTemplate>
      </asp:WebPartZone>
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>

<!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 mgr1_AuthorizeWebPart(ByVal sender As Object, _
    ByVal e As WebPartAuthorizationEventArgs)
    
    If Not String.IsNullOrEmpty(e.AuthorizationFilter) Then
      If e.AuthorizationFilter = "user" Then
        e.IsAuthorized = True
      Else
        e.IsAuthorized = False
      End If
    End If

  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr1" runat="server" 
        OnAuthorizeWebPart="mgr1_AuthorizeWebPart" />
      <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"
            Title="Filter Test"
            AuthorizationFilter="admin" />
          <asp:Calendar ID="Calendar1" runat="server" 
            Title="My Calendar"/>
        </ZoneTemplate>
      </asp:WebPartZone>
    </div>
    </form>
</body>
</html>

Poiché la configurazione degli utenti nei ruoli esula dall'ambito di questo argomento, in questo esempio di codice non vengono verificati i ruoli utente nel filtro.Because setting up users in roles is beyond the scope of this topic, this code example does not check user roles in the filtering. Tuttavia, lo scenario di filtro dei controlli in base ai ruoli utente è probabilmente uno degli usi più comuni di questa funzionalità di filtro.However, the scenario of filtering controls according to user roles is likely to be one of the most common uses of this filtering feature. Se si dispone di ruoli nel sito e si desidera controllare i ruoli utente in questo metodo per filtrare i controlli, il metodo sarà simile al blocco di codice seguente (rispetto all'approccio più semplice nell'esempio di codice precedente, che non utilizza i ruoli).If you have roles on your site, and you want to check user roles in this method to filter controls, the method would resemble the following code block (versus the simpler approach in the preceding code example, which does not use roles).

Protected Sub WebPartManager1_AuthorizeWebPart(ByVal sender _  
  As Object, ByVal e As WebPartAuthorizationEventArgs)  
  
  If String.IsNullOrEmpty(e.AuthorizationFilter) Then  
    If Roles.IsUserInRole(Page.User.Identity.Name, _  
      e.AuthorizationFilter) Then  
  
      e.IsAuthorized = True  
    Else  
      e.IsAuthorized = False  
    End If  
  End If  
  
End Sub  
protected void mgr1_AuthorizeWebPart(object sender,   
  WebPartAuthorizationEventArgs e)  
{  
  if (!String.IsNullOrEmpty(e.AuthorizationFilter))  
  {  
    if(Roles.IsUserInRole(Page.User.Identity.Name, e.authorizationFilter))  
      e.IsAuthorized = true;  
    else  
      e.IsAuthorized = false;  
  }  
}  

Commenti

Il OnAuthorizeWebPart metodo viene chiamato dal metodo IsAuthorized quando un WebPart controllo viene verificato per l'aggiunta di un'autorizzazione a una pagina.The OnAuthorizeWebPart method is called by the IsAuthorized method, when a WebPart control is being checked for authorization to be added to a page. Quando viene OnAuthorizeWebPart chiamato il metodo, genera l' AuthorizeWebPart evento e, se è presente un metodo del gestore per l'evento, richiama il gestore.When the OnAuthorizeWebPart method is called, it raises the AuthorizeWebPart event, and if there is a handler method for the event, it invokes the handler.

Il processo di autorizzazione WebPart dei controlli è un'importante Web part funzionalità.The process of authorizing WebPart controls is an important Web Parts feature. Ogni WebPart controllo o server aggiunto a una zona WebPartManager dal controllo passa attraverso un processo di autorizzazione per determinare se è possibile aggiungere il controllo.Every WebPart or server control that is added to a zone by the WebPartManager control goes through an authorization process to determine whether the control can be added. Per impostazione predefinita, il set di controllo Web part non fornisce criteri di filtro per impedire l'aggiunta di controlli a una zona.By default, the Web Parts control set does not provide any filtering criteria to prevent controls from being added to a zone. Tuttavia, il set di controlli fornisce i meccanismi necessari agli sviluppatori per creare i propri criteri di filtro.But the control set does provide the mechanisms necessary for developers to create their own filtering criteria. Con questi meccanismi è possibile creare scenari di filtro personalizzati.By using these mechanisms, you can create custom filtering scenarios. Ad esempio, è possibile creare un filtro in modo che, se un utente si trova in un ruolo di amministratore, alcuni controlli vengono aggiunti a una zona quando viene eseguito il rendering della pagina e, se l'utente si trova in un ruolo utente, tali controlli non vengono aggiunti.For example, you could create a filter so that, if a user is in an administrator role, certain controls would be added to a zone when the page is rendered, and if the user is in a user role, those controls would not be added.

I meccanismi per filtrare i controlli durante il processo di autorizzazione AuthorizationFilter sono la WebPart proprietà dei controlli IsAuthorized , OnAuthorizeWebPart i metodi WebPartManager e e AuthorizeWebPart l'evento sul controllo.The mechanisms for filtering controls during the authorization process are the AuthorizationFilter property on WebPart controls, the IsAuthorized and OnAuthorizeWebPart methods, and the AuthorizeWebPart event on the WebPartManager control.

Per creare uno scenario di filtro, esistono essenzialmente due attività.To create a filtering scenario, there are essentially two tasks. Assegnare innanzitutto le AuthorizationFilter stringhe alla proprietà di ogni WebPart controllo che si desidera filtrare.First, you assign strings to the AuthorizationFilter property of each WebPart control you want to filter. Questi valori di stringa possono essere arbitrari, ma devono contenere i criteri in cui si desidera filtrare.These string values can be arbitrary, but they should contain the criteria you want to filter on. Ad esempio, se si desidera che un determinato controllo venga aggiunto a una zona solo se un utente amministratore Visualizza la pagina, è possibile assegnare un valore admin stringa alla proprietà.For example, if you wanted a given control to be added to a zone only if an administrator user is viewing the page, then you might assign a string value of admin to the property. È quindi possibile usare la funzionalità ruoli ASP.NET e aggiungere tutti gli utenti del sito a diversi ruoli, ad esempio amministratore, Manager e utente.Then you could use the ASP.NET roles feature, and add all users of your site to various roles such as administrator, manager, and user. Quando si esegue il caricamento di una pagina, il codice di filtro controlla il ruolo di un utente, lo confronta con il valore del filtro di autorizzazione per un controllo verificato e se, ad esempio, l'utente è in un ruolo di amministratore e il AuthorizationFilter valore del controllo è stato impostato su admin, è possibile aggiungere il controllo.When a page is loading, your filtering code would check what role a user is in, compare it to the authorization filter value on a control being checked, and if (for example) the user is in an administrator role and you had set the control's AuthorizationFilter value to admin, the control could be added.

Il secondo passaggio della creazione di uno scenario di filtro consiste nel scrivere codice per AuthorizationFilter controllare i valori WebPart delle proprietà nei controlli e determinare se ogni controllo è autorizzato prima di essere aggiunto alla relativa zona.The second step in creating a filtering scenario is to write code to check the AuthorizationFilter property values on WebPart controls, and determine whether each control is authorized before it is added to its zone. Sono disponibili due opzioni per la posizione in cui inserire il codice di filtro.There are two options for where to place this filtering code. La prima opzione è l'opzione preferita per gli sviluppatori di pagine.The first option is the preferred option for page developers. È possibile creare un metodo per gestire l' AuthorizeWebPart evento direttamente nel codice di script del server della pagina Web o in un file di separazione del codice.You can create a method to handle the AuthorizeWebPart event directly in the Web page server script code, or in a code separation file. Associare il metodo all'evento aggiungendo l' OnAuthorizeWebPart attributo al tag per il WebPartManager controllo nella pagina, come illustrato nel codice di markup di esempio seguente.Associate your method with the event by adding the OnAuthorizeWebPart attribute to the tag for the WebPartManager control in the page, as shown in the following sample markup code.

<asp:webpartmanager id="manager1" runat="server"   
   OnAuthorizeWebPart="manager1_AuthorizeWebPart" />  

Tutto il metodo personalizzato deve eseguire la verifica di ogni WebPart controllo per i criteri di filtro e quindi, in base ai risultati, assegnare un valore booleano IsAuthorized alla proprietà dell' WebPartAuthorizationEventArgs oggetto per indicare se il WebPart controllo può essere aggiunto.All your custom method has to do is check each WebPart control for the filtering criteria and then, based on the results, assign a Boolean value to the IsAuthorized property of the WebPartAuthorizationEventArgs object to indicate whether the WebPart control can be added. Il codice nella sezione di esempio illustra come eseguire questa operazione.The code in the Example section demonstrates how to do this.

La seconda opzione per la posizione in cui inserire il codice di filtro consiste nell' WebPartManager ereditare dalla classe ed eseguire l'override di un metodo per verificare i criteri di filtro.The second option for where to place your filtering code is to inherit from the WebPartManager class, and override a method to check the filter criteria. I due metodi di cui è possibile eseguire l'override a WebPartManager.IsAuthorized(Type, String, String, Boolean) tale scopo sono OnAuthorizeWebPart il metodo o.The two methods you can override to do this are the WebPartManager.IsAuthorized(Type, String, String, Boolean) method or the OnAuthorizeWebPart method. Sebbene entrambi i metodi funzionino, nella maggior parte dei casi è preferibile IsAuthorized eseguire l'override del metodo, perché offre un maggiore controllo a livello di codice sull'intero processo OnAuthorizeWebPart di autorizzazione, mentre il metodo esegue una sola attività specifica , ovvero per generare l'evento e verificare la presenza di un gestore.Although either method would work, in most cases it is preferable to override the IsAuthorized method, because it provides you with greater programmatic control over the whole authorization process, whereas the OnAuthorizeWebPart method does only one specific task, which is to raise the event and check for a handler. Per un esempio di codice di una WebPartManager classe personalizzata che esegue IsAuthorized l'override del metodo WebPartManager.IsAuthorized(Type, String, String, Boolean) , vedere l'overload del metodo.For a code example of a custom WebPartManager class that overrides the IsAuthorized method, see the WebPartManager.IsAuthorized(Type, String, String, Boolean) overload of the method.

Si applica a

Vedi anche