WebPart.AuthorizationFilter Propriedade

Definição

Obtém ou define uma cadeia arbitrária para determinar se um WebPart controlo está autorizado a ser adicionado a uma página.

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

Valor de Propriedade

Uma cadeia que autoriza a adição de um controlo a uma página Web. O valor padrão é uma cadeia vazia ("").

Atributos

Exemplos

O seguinte exemplo de código demonstra a utilização da AuthorizationFilter propriedade. Mostra como definir um handler de método personalizado para o AuthorizeWebPart evento, para que o handler possa fornecer código de filtragem personalizado para o OnAuthorizeWebPart método. Este exemplo seria uma forma típica de um programador de páginas fornecer um cenário de filtragem e autorização para WebPart adicionar controlos a uma página.

No código da página Web, repare que o <asp:webpartmanager> elemento tem o OnAuthorizeWebPart atributo com o nome do gestor de eventos atribuído. Este método verifica se os controlos na página têm AuthorizationFilter o valor da propriedade definido para admin, e, em caso afirmativo, devolve true, o que significa que serão autorizados e adicionados à página.

Note

Note-se que controlos que não têm qualquer valor atribuído à AuthorizationFilter propriedade também são adicionados, porque se assume que não fazem parte de um cenário de filtragem. Esta seria uma abordagem comum num cenário de filtragem: alguns controlos seriam filtrados e outros não, porque se presume que estejam disponíveis para todos os utilizadores.

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

Como configurar utilizadores em funções está fora do âmbito deste tópico, este exemplo de código não verifica os papéis dos utilizadores no filtro. No entanto, o cenário de filtrar os controlos de acordo com os papéis do utilizador é provavelmente uma das utilizações mais comuns desta funcionalidade de filtragem. Se tiver papéis no seu site e quiser verificar os papéis dos utilizadores neste método para filtrar os controlos, o método assemelhar-se-á ao seguinte bloco de código (ao contrário da abordagem mais simples do exemplo de código anterior, que não usa papéis).

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;
  }
}

Observações

O conjunto de controlo Web Parts não implementa qualquer comportamento padrão para a AuthorizationFilter propriedade. No entanto, a propriedade é fornecida para que possa atribuir um valor de string arbitrário a um controlo personalizado WebPart ; esta propriedade pode ser verificada pelo WebPartManager controlo durante o seu AuthorizeWebPart evento para determinar se o controlo pode ser adicionado à página.

Em alguns casos, a propriedade AuthorizationFilter pode ser usada com a funcionalidade de gestor de papéis ASP.NET, de modo que, se um utilizador estiver num determinado papel, e se o valor da cadeia da propriedade AuthorizationFilter cumprir certas condições definidas pelo programador, então o controlo pode ser adicionado. Esta abordagem permite aos programadores criar vistas personalizadas de uma página com base numa combinação de funções e outros critérios de autorização que especificam.

Esta propriedade não pode ser definida por temas ou temas de folhas de estilo. Para mais informações, consulte ThemeableAttribute e ASP.NET Temas e Skins.

O âmbito de personalização desta propriedade é definido e Shared só pode ser modificado por utilizadores autorizados. Para mais informações, consulte PersonalizableAttribute a Visão Geral da Personalização de Web Parts.

Notas para Herdeiros

Para usar esta propriedade, deve criar um controlo personalizado WebPartManager e sobrepor o seu OnAuthorizeWebPart(WebPartAuthorizationEventArgs) método ou o método IsAuthorized(WebPart) para gerir o cheque da AuthorizationFilter propriedade.

Aplica-se a

Ver também