WebPart.AuthorizationFilter Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 admin
e, 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 verifica as 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 verificar as funções de usuário neste 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 manipular a verificação da AuthorizationFilter propriedade.