WebPart.AuthorizationFilter Propriedade

Definição

Obtém ou define uma cadeia de caracteres arbitrária para determinar se um controle WebPart tem autorização para 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 da propriedade

Uma cadeia de caracteres que autoriza um controle a ser adicionado a uma página da Web. O valor padrão é uma cadeia de caracteres vazia ("").

Atributos

Exemplos

O exemplo de código a seguir demonstra o uso da AuthorizationFilter propriedade . Ele mostra como definir um manipulador de método personalizado para o AuthorizeWebPart evento, para que o manipulador possa fornecer código de filtragem personalizado para o OnAuthorizeWebPart método . Este exemplo seria uma maneira típica de um desenvolvedor de página fornecer um cenário de filtragem e autorização de WebPart controles a serem adicionados a uma página.

No código da página da Web, observe que o <asp:webpartmanager> elemento tem o OnAuthorizeWebPart atributo com o nome do manipulador de eventos atribuído a ele. Esse método verifica se os controles na página têm seu AuthorizationFilter valor de propriedade definido como admine, nesse caso, retorna true, o que significa que eles serão autorizados e adicionados à página.

Observação

Observe que os controles que não têm nenhum valor atribuído à AuthorizationFilter propriedade também são adicionados, pois supõe-se que eles não fazem parte de um cenário de filtragem. Essa seria uma abordagem comum em um cenário de filtragem: alguns controles seriam filtrados e outros não estariam, pois presume-se que estejam disponíveis para todos os usuários.

<%@ 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 a configuração de usuários em funções está além do escopo deste tópico, este exemplo de código não marcar funções de usuário na filtragem. No entanto, o cenário de filtragem de controles de acordo com as funções de usuário provavelmente será um dos usos mais comuns desse recurso de filtragem. Se você tiver funções em seu site e quiser marcar funções de usuário nesse método para filtrar controles, o método será semelhante ao bloco de código a seguir (em comparação com a abordagem mais simples no exemplo de código anterior que não usa funções).

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

Comentários

O conjunto de controle de Web Parts não implementa nenhum comportamento padrão para a AuthorizationFilter propriedade . No entanto, a propriedade é fornecida para que você possa atribuir um valor de cadeia de caracteres arbitrário a um controle personalizado WebPart ; essa propriedade pode ser verificada pelo controle durante seu WebPartManagerAuthorizeWebPart evento para determinar se o controle pode ser adicionado à página.

Em alguns casos, a AuthorizationFilter propriedade pode ser usada com o recurso ASP.NET gerenciador de funções, de modo que, se um usuário estiver em uma determinada função e se o valor da cadeia de caracteres da propriedade atender a AuthorizationFilter determinadas condições definidas pelo desenvolvedor, o controle poderá ser adicionado. Essa abordagem permite que os desenvolvedores criem exibições personalizadas de uma página com base em uma combinação de funções e outros critérios de autorização que eles especificam.

Essa propriedade não pode ser definida por temas ou temas de folha de estilos. Para obter mais informações, consulte ThemeableAttribute e ASP.NET Temas e Peles.

O escopo de personalização dessa propriedade é definido como Shared e só pode ser modificado por usuários autorizados. Para obter mais informações, consulte PersonalizableAttribute e Visão geral da Personalização de Web Parts.

Notas aos Herdeiros

Para usar essa propriedade, você deve criar um controle personalizado WebPartManager e substituir seu OnAuthorizeWebPart(WebPartAuthorizationEventArgs) método ou seu IsAuthorized(WebPart) método para lidar com o marcar da AuthorizationFilter propriedade.

Aplica-se a

Confira também