WebPart.AuthorizationFilter Proprietà

Definizione

Ottiene o imposta una stringa arbitraria per determinare se è stata autorizzata l'aggiunta di un controllo WebPart a una pagina.

public:
 virtual property System::String ^ AuthorizationFilter { System::String ^ get(); void set(System::String ^ value); };
[System.Web.UI.Themeable(false)]
[System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)]
public virtual string AuthorizationFilter { get; set; }
[<System.Web.UI.Themeable(false)>]
[<System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)>]
member this.AuthorizationFilter : string with get, set
Public Overridable Property AuthorizationFilter As String

Valore della proprietà

Stringa che autorizza l'aggiunta di un controllo a una pagina Web. Il valore predefinito è una stringa vuota ("").

Attributi

Esempio

Nell'esempio di codice seguente viene illustrato l'uso della AuthorizationFilter proprietà . Viene illustrato come impostare un gestore di metodo personalizzato per l'evento AuthorizeWebPart , in modo che il gestore possa fornire codice di filtro personalizzato per il OnAuthorizeWebPart metodo. Questo esempio è un modo tipico per consentire agli sviluppatori di pagine di fornire uno scenario di filtro e l'autorizzazione dei WebPart controlli da aggiungere a una pagina.

Nel codice della pagina Web si noti che all'elemento <asp:webpartmanager> è assegnato l'attributo OnAuthorizeWebPart con il nome del gestore eventi. Questo metodo controlla se il valore della proprietà dei controlli nella pagina AuthorizationFilter è impostato su admine, in tal caso, restituisce true, il che significa che verranno autorizzati e aggiunti alla pagina.

Nota

Si noti che vengono aggiunti anche i controlli che non dispongono di alcun valore assegnato alla AuthorizationFilter proprietà, perché si presuppone che non facciano parte di uno scenario di filtro. Si tratta di un approccio comune in uno scenario di filtro: alcuni controlli verrebbero filtrati e altri non sarebbero disponibili per tutti gli utenti.

<%@ 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 non rientra nell'ambito di questo argomento, questo esempio di codice non controlla i ruoli utente nel filtro. Tuttavia, è probabile che lo scenario dei controlli di filtro in base ai ruoli utente sia uno degli usi più comuni di questa funzionalità di filtro. Se si hanno ruoli nel sito e si vogliono 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 usa ruoli).

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 set di controlli Web part non implementa alcun comportamento predefinito per la AuthorizationFilter proprietà . Tuttavia, la proprietà viene fornita in modo da poter assegnare un valore stringa arbitrario a un controllo personalizzato WebPart . Questa proprietà può essere controllata dal controllo durante il WebPartManager relativo AuthorizeWebPart evento per determinare se il controllo può essere aggiunto alla pagina.

In alcuni casi, la AuthorizationFilter proprietà può essere usata con la funzionalità di gestione ruoli ASP.NET, in modo che se un utente è in un determinato ruolo e se il valore stringa della AuthorizationFilter proprietà soddisfa determinate condizioni impostate dallo sviluppatore, è possibile aggiungere il controllo. Questo approccio consente agli sviluppatori di creare visualizzazioni personalizzate di una pagina in base a una combinazione di ruoli e altri criteri di autorizzazione specificati.

Questa proprietà non può essere impostata da temi oppure temi di fogli di stile. Per altre informazioni, vedere ThemeableAttribute e ASP.NET Temi e interfacce.

L'ambito di personalizzazione di questa proprietà è impostato su Shared e può essere modificato solo dagli utenti autorizzati. Per altre informazioni, vedere PersonalizableAttribute e Panoramica della personalizzazione delle web part.

Note per gli eredi

Per utilizzare questa proprietà, è necessario creare un controllo personalizzato WebPartManager ed eseguire l'override del relativo OnAuthorizeWebPart(WebPartAuthorizationEventArgs) metodo o del relativo IsAuthorized(WebPart) metodo per gestire il controllo della AuthorizationFilter proprietà.

Si applica a

Vedi anche