Condividi tramite


WebPart.AuthorizationFilter Proprietà

Definizione

Ottiene o imposta una stringa arbitraria per determinare se un WebPart controllo è autorizzato ad essere aggiunto 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 un controllo da aggiungere a una pagina Web. Il valore predefinito è una stringa vuota ("").

Attributi

Esempio

Nell'esempio di codice seguente viene illustrato l'uso della AuthorizationFilter proprietà . Illustra come impostare un gestore di metodi 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 a uno sviluppatore 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 l'elemento <asp:webpartmanager> ha l'attributo OnAuthorizeWebPart con il nome del gestore eventi assegnato. Questo metodo controlla se i controlli nella pagina hanno il valore AuthorizationFilter della proprietà impostato su admine, in tal caso, restituisce true, il che significa che verranno autorizzati e aggiunti alla pagina.

Annotazioni

Si noti che anche i controlli che non dispongono di alcun valore assegnato alla AuthorizationFilter proprietà vengono aggiunti, perché si presuppone che non facciano parte di uno scenario di filtro. Questo sarebbe un approccio comune in uno scenario di filtro: alcuni controlli verrebbero filtrati e altri non sarebbero, perché si presuppone che siano 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 dispone di 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 WebPartManager controllo durante il 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 si trova in un determinato ruolo e se il valore stringa della AuthorizationFilter proprietà soddisfa determinate condizioni impostate dallo sviluppatore, il controllo può essere aggiunto. 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 in base a temi o temi del foglio 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 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 OnAuthorizeWebPart(WebPartAuthorizationEventArgs) relativo metodo o del relativo IsAuthorized(WebPart) metodo per gestire il controllo della AuthorizationFilter proprietà.

Si applica a

Vedi anche