WebPart.AuthorizationFilter Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.