Expandir Minimizar
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
Este tópico ainda não foi avaliado como - Avalie este tópico

Método WebPartManager.OnAuthorizeWebPart

Eleva o AuthorizeWebPart eventos e invoca um manipulador para o evento, caso exista.

Namespace:  System.Web.UI.WebControls.WebParts
Assembly:  System.Web (em System.Web.dll)
protected virtual void OnAuthorizeWebPart(
	WebPartAuthorizationEventArgs e
)

O OnAuthorizeWebPart método é chamado pelo IsAuthorized método, quando um WebPart controle está sendo verificada autorização ser adicionado a uma página. Quando o OnAuthorizeWebPart método é chamado, ele dispara o AuthorizeWebPart evento, e se houver um método do manipulador para o evento, ele invoca o manipulador.

O processo de autorização WebPart controles é um recurso importante do Web Parts. Cada WebPart ou controle de servidor que é adicionado a uma zona, o WebPartManager controle passa pelo processo de autorização para determinar se o controle pode ser adicionado. Por padrão, o conjunto de controles de Web Parts não fornece quaisquer critérios de filtragem para impedir que controles sejam adicionados a uma zona. Mas o conjunto de controles fornecem os mecanismos necessários para que os desenvolvedores criem seus próprios critérios de filtragem. Usando esses mecanismos, você pode criar cenários personalizados de filtragem. Por exemplo, você poderia criar um filtro para que, se um usuário estiver em uma função de administrador, certos controles seriam adicionados a uma zona quando a página é processada, e se o usuário estiver em uma função de usuário, esses controles não seriam adicionados.

Os mecanismos para filtragem controles durante o processo de autorização são o AuthorizationFilter propriedade em WebPart controles, o IsAuthorized e OnAuthorizeWebPart métodos e o AuthorizeWebPart evento na WebPartManager controle.

Para criar um cenário de filtragem, existem basicamente duas tarefas. Primeiro, você pode atribuir seqüências de caracteres para o AuthorizationFilter propriedade de cada WebPart controle você deseja filtrar. Esses valores de seqüência de caracteres podem ser arbitrários, mas eles devem conter os critérios que você deseja filtrar. Por exemplo, se você quisesse que um determinado controle a serem adicionados a uma região somente se um administrador o usuário está exibindo a página, você pode atribuir um valor de seqüência de caracteres de admin à propriedade. Em seguida, você poderia usar o ASP.NET o recurso de funções e adicionar todos os usuários do seu site para várias funções, como administrador, Gerenciador e usuário. Quando uma página está carregando, o seu código de filtragem seria verifique qual função de um usuário está em, compará-lo com o valor do filtro de autorização em um controle que está sendo verificado e se (por exemplo) o usuário é uma função de administrador e você tiver definido o controle AuthorizationFilter valor para admin, o controle pode ser adicionado.

A segunda etapa na criação de um cenário de filtragem é escrever código para verificar a AuthorizationFilter valores de propriedade no WebPart controla e determinar se cada controle está autorizado a que ela seja adicionada para sua zona. Há duas opções para onde colocar esse código de filtragem. A primeira opção é a opção preferencial para os desenvolvedores de páginas. Você pode criar um método para lidar com o AuthorizeWebPart evento diretamente no código de script do servidor de página da Web ou em um arquivo de separação de código. Associar seu método ao evento, adicionando a OnAuthorizeWebPart atributo na marca de WebPartManager controle na página, conforme mostrado no código de marcação de exemplo a seguir.

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

Tudo o que seu método personalizado tem a fazer é verificam cada WebPart controlar para os critérios de filtragem e, com base nos resultados, atribua um valor booleano para o IsAuthorized propriedade da WebPartAuthorizationEventArgs objeto para indicar se o WebPart controle pode ser adicionado. O código na seção exemplo demonstra como fazer isso.

A segunda opção para onde colocar seu código de filtragem é herdada do WebPartManager de classe e substituir um método para verificar os critérios de filtro. Os dois métodos que você pode substituir para fazer isso são as WebPartManager.IsAuthorized(Type, String, String, Boolean) método ou a OnAuthorizeWebPart método. Embora ambos os métodos funcionaria, na maioria dos casos é preferível para substituir o IsAuthorized método, pois oferece maior controle programático sobre o processo de autorização inteira, ao passo que o OnAuthorizeWebPart método faz apenas uma tarefa específica, o que é elevar o evento e verificar se há um manipulador. Para obter um exemplo de código de um personalizado WebPartManager classe substitui o IsAuthorized método, consulte o WebPartManager.IsAuthorized(Type, String, String, Boolean) sobrecarga do método.

O exemplo de código a seguir demonstra como definir um manipulador de evento personalizado para o AuthorizeWebPart evento, para que o manipulador pode fornecer o código personalizado de filtragem para o OnAuthorizeWebPart método. Este exemplo seria uma forma típica de um desenvolvedor de página fornecer um cenário de filtragem e a autorização de WebPart controles sejam adicionados a uma página.

Na 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. O método verifica se os controles na página têm suas respectivas AuthorizationFilter valores de propriedade é definida como admin e, nesse caso, retornará true, que significa que irão ser autorizados e adicionadas à página.

ObservaçãoObservação

Observe que os controles que não têm qualquer valor atribuído para o AuthorizationFilter propriedade são adicionados da mesma forma, pois eles serão considerados como não para fazer parte de um cenário de filtragem. Isso seria uma abordagem comum em um cenário de filtragem: alguns controles serão filtrados e outras pessoas não estariam, porque eles são mal-intencionadas devem estar 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>


Porque a configuração de usuários em funções está além do escopo deste tópico, este exemplo de código não verifica as funções de usuário em que a 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 o funções em seu site, e você deseja verificar as funções de usuário neste método para filtrar os controles, o método é semelhante a seguinte bloco de código (versus a abordagem mais simples no exemplo de código anterior, que não usa funções).

[Visual Basic]

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

[C#]

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

.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte .Requisitos de sistema do NET Framework.
Isso foi útil para você?
(1500 caracteres restantes)

Contribuições da comunidade

ADICIONAR
© 2013 Microsoft. Todos os direitos reservados.