WebPartManager.OnAuthorizeWebPart(WebPartAuthorizationEventArgs) 메서드

정의

AuthorizeWebPart 이벤트를 발생시키고 이벤트의 처리기가 있는 경우 이 처리기를 호출합니다.

protected:
 virtual void OnAuthorizeWebPart(System::Web::UI::WebControls::WebParts::WebPartAuthorizationEventArgs ^ e);
protected virtual void OnAuthorizeWebPart (System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs e);
abstract member OnAuthorizeWebPart : System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs -> unit
override this.OnAuthorizeWebPart : System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs -> unit
Protected Overridable Sub OnAuthorizeWebPart (e As WebPartAuthorizationEventArgs)

매개 변수

e
WebPartAuthorizationEventArgs

이벤트 데이터가 들어 있는 WebPartAuthorizationEventArgs입니다.

예제

다음 코드 예제에 대 한 사용자 지정 이벤트 처리기를 AuthorizeWebPart 설정 하는 방법을 보여 줍니다.는 처리기 메서드에 대 한 OnAuthorizeWebPart 사용자 지정 필터링 코드를 제공할 수 있도록 합니다. 이 예제는 페이지 개발자가 필터링 시나리오 및 페이지에 추가할 컨트롤의 WebPart 권한 부여를 제공하는 일반적인 방법입니다.

웹 페이지에서 요소 OnAuthorizeWebPart<asp:webpartmanager> 할당된 이벤트 처리기의 이름을 가진 특성이 있음을 확인합니다. 메서드는 페이지의 컨트롤에 해당 AuthorizationFilter 속성 값이 로 설정되어 admin 있는지 확인하고, 있는 경우 를 반환 true합니다. 즉, 권한이 부여되고 페이지에 추가됩니다.

참고

속성에 할당된 AuthorizationFilter 값이 없는 컨트롤도 추가됩니다. 필터링 시나리오의 일부가 아닌 것으로 간주되기 때문입니다. 이는 필터링 시나리오에서 일반적인 접근 방식입니다. 일부 컨트롤은 필터링되고 다른 컨트롤은 모든 사용자가 사용할 수 있는 것으로 추정되기 때문에 필터링되지 않습니다.

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

역할에서 사용자를 설정하는 것은 이 항목의 scope 벗어나므로 이 코드 예제에서는 필터링에서 사용자 역할을 검사 않습니다. 그러나 사용자 역할에 따라 컨트롤을 필터링하는 시나리오는 이 필터링 기능의 가장 일반적인 사용 중 하나일 수 있습니다. 사이트에 역할이 있고 이 메서드의 사용자 역할을 검사 컨트롤을 필터링하려는 경우 메서드는 다음 코드 블록과 유사합니다(이전 코드 예제에서는 역할을 사용하지 않는 간단한 방법과 비교).

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

설명

메서드는 OnAuthorizeWebPart 메서드에 IsAuthorized 의해 호출 됩니다는 컨트롤이 페이지에 추가 될 권한 부여를 확인 하는 경우 WebPart . 메서드가 OnAuthorizeWebPart 호출되면 이벤트가 발생 AuthorizeWebPart 하며 이벤트에 대한 처리기 메서드가 있는 경우 처리기를 호출합니다.

컨트롤에 권한을 부여하는 WebPart 프로세스는 중요한 웹 파트 기능입니다. 컨트롤에 의해 WebPartManager 영역에 추가되는 모든 WebPart 또는 서버 컨트롤은 권한 부여 프로세스를 통해 컨트롤을 추가할 수 있는지 여부를 결정합니다. 기본적으로 웹 파트 컨트롤 집합은 컨트롤이 영역에 추가되지 않도록 필터링 조건을 제공하지 않습니다. 그러나 컨트롤 집합은 개발자가 자체 필터링 조건을 만드는 데 필요한 메커니즘을 제공합니다. 이러한 메커니즘을 사용하여 사용자 지정 필터링 시나리오를 만들 수 있습니다. 예를 들어 사용자가 관리자 역할에 있는 경우 페이지가 렌더링될 때 특정 컨트롤이 영역에 추가되고 사용자가 사용자 역할에 있는 경우 해당 컨트롤이 추가되지 않도록 필터를 만들 수 있습니다.

권한 부여 프로세스 중에 컨트롤을 필터링하는 메커니즘은 컨트롤의 AuthorizationFilter 속성 WebPart , IsAuthorizedOnAuthorizeWebPart 메서드 및 컨트롤의 AuthorizeWebPart 이벤트 WebPartManager 입니다.

필터링 시나리오를 만들기 위해 기본적으로 두 가지 작업이 있습니다. 먼저 필터링하려는 각 WebPart 컨트롤의 속성에 AuthorizationFilter 문자열을 할당합니다. 이러한 문자열 값은 임의일 수 있지만 필터링하려는 조건을 포함해야 합니다. 예를 들어 관리자 사용자가 페이지를 보고 있는 경우에만 지정된 컨트롤을 영역에 추가하려는 경우 의 문자열 값을 admin 속성에 할당할 수 있습니다. 그런 다음 ASP.NET 역할 기능을 사용하고 사이트의 모든 사용자를 관리자, 관리자 및 사용자와 같은 다양한 역할에 추가할 수 있습니다. 페이지를 로드할 때 필터링 코드는 사용자가 있는 역할을 검사 검사 중인 컨트롤의 권한 부여 필터 값과 비교하고, (예를 들어) 사용자가 관리자 역할에 있고 컨트롤 값을 AuthorizationFilteradmin로 설정한 경우 컨트롤을 추가할 수 있습니다.

필터링 시나리오를 만드는 두 번째 단계는 코드를 작성하여 컨트롤의 WebPart 속성 값을 검사 AuthorizationFilter 각 컨트롤이 해당 영역에 추가되기 전에 권한이 부여되는지 여부를 확인하는 것입니다. 이 필터링 코드를 배치할 위치에는 두 가지 옵션이 있습니다. 첫 번째 옵션은 페이지 개발자가 선호하는 옵션입니다. 웹 페이지 서버 스크립트 코드 또는 코드 분리 파일에서 직접 이벤트를 처리하는 AuthorizeWebPart 메서드를 만들 수 있습니다. 다음 샘플 태그 코드와 같이 페이지의 컨트롤에 대한 WebPartManager 태그에 특성을 추가하여 OnAuthorizeWebPart 메서드를 이벤트와 연결합니다.

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

사용자 지정 메서드는 필터링 조건에 대한 각 WebPart 컨트롤을 검사 다음 결과에 따라 개체의 WebPartAuthorizationEventArgs 속성에 부울 값을 IsAuthorized 할당하여 컨트롤을 추가할 수 있는지 여부를 WebPart 나타냅니다. 예제 섹션의 코드는 이 작업을 수행하는 방법을 보여 줍니다.

필터링 코드를 배치할 위치에 대한 두 번째 옵션은 클래스에서 상속하고 메서드를 재정의 WebPartManager 하여 필터 조건을 검사 것입니다. 이를 위해 재정의할 수 있는 두 가지 메서드는 메서드 또는 메서드입니다 WebPartManager.IsAuthorized(Type, String, String, Boolean)OnAuthorizeWebPart . 두 방법 중 하나가 작동하지만 대부분의 경우 메서드를 재정의 IsAuthorized 하는 것이 좋습니다. 메서드는 전체 권한 부여 프로세스에 대한 더 큰 프로그래밍 제어를 제공하는 반면 OnAuthorizeWebPart 메서드는 이벤트를 발생시키고 처리기에 대해 검사 특정 작업만 수행하므로 메서드를 재정의하는 것이 좋습니다. 메서드를 재정의하는 사용자 지정 WebPartManager 클래스의 코드 예제는 IsAuthorized 메서드의 오버로드를 참조 WebPartManager.IsAuthorized(Type, String, String, Boolean) 하세요.

적용 대상

추가 정보