WebPart.AuthorizationFilter Propiedad

Definición

Obtiene o establece una cadena arbitraria para determinar si se permite agregar un control WebPart a una 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 propiedad

Una cadena que permite agregar un control a una página Web. El valor predeterminado es una cadena vacía ("").

Atributos

Ejemplos

En el ejemplo de código siguiente se muestra el uso de la AuthorizationFilter propiedad . Muestra cómo establecer un controlador de método personalizado para el AuthorizeWebPart evento, de modo que el controlador pueda proporcionar código de filtrado personalizado para el OnAuthorizeWebPart método . Este ejemplo sería una manera típica de que un desarrollador de páginas proporcione un escenario de filtrado y autorización de WebPart controles que se van a agregar a una página.

En el código de la página web, observe que el <asp:webpartmanager> elemento tiene el OnAuthorizeWebPart atributo con el nombre del controlador de eventos asignado. Este método comprueba si los controles de la página tienen su AuthorizationFilter valor de propiedad establecido adminen y, si es así, devuelve true, lo que significa que se autorizarán y agregarán a la página.

Nota

Tenga en cuenta que también se agregan controles que no tienen ningún valor asignado a la AuthorizationFilter propiedad, ya que se supone que no forman parte de un escenario de filtrado. Este sería un enfoque común en un escenario de filtrado: algunos controles se filtrarían y otros no lo serían, ya que se supone que están disponibles para todos los usuarios.

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

Dado que la configuración de usuarios en roles está fuera del ámbito de este tema, este ejemplo de código no comprueba los roles de usuario en el filtrado. Sin embargo, es probable que el escenario de filtrado de controles según los roles de usuario sea uno de los usos más comunes de esta característica de filtrado. Si tiene roles en el sitio y desea comprobar los roles de usuario de este método para filtrar controles, el método se parecería al siguiente bloque de código (frente al enfoque más sencillo del ejemplo de código anterior que no usa roles).

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

Comentarios

El conjunto de controles de elementos web no implementa ningún comportamiento predeterminado para la AuthorizationFilter propiedad . Sin embargo, la propiedad se proporciona para que pueda asignar un valor de cadena arbitrario a un control personalizado WebPart ; este control puede comprobar WebPartManager esta propiedad durante su AuthorizeWebPart evento para determinar si el control se puede agregar a la página.

En algunos casos, la AuthorizationFilter propiedad se puede usar con la característica de administrador de roles de ASP.NET, de modo que si un usuario está en un rol determinado y si el valor de cadena de la AuthorizationFilter propiedad cumple ciertas condiciones establecidas por el desarrollador, se puede agregar el control. Este enfoque permite a los desarrolladores crear vistas personalizadas de una página en función de una combinación de roles y otros criterios de autorización que especifiquen.

Esta propiedad no se puede establecer mediante temas o temas de la hoja de estilos. Para obtener más información, consulte ThemeableAttribute y ASP.NET Temas y máscaras.

El ámbito de personalización de esta propiedad se establece en Shared y solo los usuarios autorizados pueden modificarlos. Para obtener más información, vea PersonalizableAttribute y Información general sobre personalización de elementos web.

Notas a los desarrolladores de herederos

Para usar esta propiedad, debe crear un control personalizado WebPartManager e invalidar su OnAuthorizeWebPart(WebPartAuthorizationEventArgs) método o su IsAuthorized(WebPart) método para controlar la comprobación de la AuthorizationFilter propiedad.

Se aplica a

Consulte también