WebPartManager.IsAuthorized 메서드

정의

WebPart 또는 다른 서버 컨트롤이 페이지에 추가할 수 있는 컨트롤인지 여부를 확인합니다.

오버로드

IsAuthorized(WebPart)

컨트롤이 페이지에 추가할 수 있는 컨트롤인지 여부를 확인하기 위한 초기 단계를 수행합니다.

IsAuthorized(Type, String, String, Boolean)

컨트롤이 페이지에 추가할 수 있는 컨트롤인지 여부를 확인하기 위한 마지막 단계를 수행합니다.

설명

웹 파트 기능의 유연성 중 하나는 런타임에 웹 페이지에 서버 컨트롤을 추가하는 기능입니다. 서버 컨트롤(사용자 지정 컨트롤, 사용자 지정 WebPart 서버 컨트롤, 사용자 정의 컨트롤 또는 ASP.NET 컨트롤일 수 있음)을 추가할 수 있는 여러 가지 일반적인 시나리오가 있습니다.

다음 일반적인 시나리오에서 웹 파트 컨트롤 집합은 페이지에 서버 컨트롤을 추가하려고 시도하고 IsAuthorized 메서드를 호출하여 권한을 부여합니다.

  • 서버 컨트롤이 영역 내 웹 페이지의 태그에 선언하여 추가되는 경우 WebPartZoneBase

  • 서버 컨트롤이 영역에 프로그래밍 방식으로 추가되는 경우

  • 사용자가 서버 컨트롤을 컨트롤의 웹 파트 카탈로그로 가져오는 경우

  • 기존 서버 컨트롤이 개인 설정 데이터 저장소에서 로드되는 경우

  • 서버 컨트롤이 서버 컨트롤 카탈로그에서 사용할 수 있도록 컨트롤에 추가 DeclarativeCatalogPart 되는 경우

컨트롤이 추가 IsAuthorized 되는 각 시나리오에서 메서드는 컨트롤을 추가할 수 있도록 모든 권한 부여 조건이 충족되었는지 확인하기 위해 호출됩니다. 컨트롤에 권한이 부여되면 필터링 시나리오가 없는 경우와 마찬가지로 정상적으로 추가됩니다. 컨트롤에 권한이 없는 경우 웹 파트 컨트롤 집합은 컨텍스트에 따라 여러 가지 방법으로 응답할 수 있습니다. 제어 집합은 사용자에게 알릴 필요가 없는 경우 권한 없는 부분을 자동으로 추가하지 못하거나, 오류 메시지를 표시하거나, 클래스의 UnauthorizedWebPart instance 자리 표시자로 추가할 수 있습니다. 이 자리 표시자 개체는 페이지에 표시되지 않지만 권한 없는 컨트롤이 제외되었음을 나타내기 위해 페이지 소스 코드에 표시됩니다.

컨트롤에 권한이 부여되었는지 여부를 결정하는 것은 권한 부여 필터입니다. 권한 부여 필터는 개발자가 지정된 조건을 충족하지 않는 컨트롤을 페이지에서 제외할 수 있도록 하는 웹 파트 컨트롤 집합의 기능입니다.

필터링 시나리오를 만들려면 개발자가 두 가지 작업을 수행해야 합니다. 먼저 시나리오에서 사용하려는 각 WebPart 컨트롤의 속성에 AuthorizationFilter 문자열 값(값은 임의일 수 있습니다)을 할당해야 합니다. 컨트롤이 영역에 배치되는 경우 이러한 컨트롤은 런타임에 컨트롤로 래핑 GenericWebPart 되고 이 컨트롤은 속성을 상속하기 때문에 컨트롤이 아닌 WebPart 다른 유형의 서버 컨트롤에 WebPartZoneBase 대해 이 속성에 값을 할당할 AuthorizationFilter 수도 있습니다.

필터링 시나리오를 만드는 데 필요한 두 번째 단계는 메서드를 재정의 IsAuthorized(Type, String, String, Boolean) 하거나 이벤트에 대한 AuthorizeWebPart 이벤트 처리기를 만드는 것입니다. 이러한 메서드에서 개발자는 속성을 검사 AuthorizationFilter 수 있으며, 값이 컨트롤에 권한을 부여하지 않아야 했음을 나타내는 경우 개발자는 메서드가 IsAuthorized 값을 false반환하도록 합니다.

참고

메서드를 사용하여 IsAuthorized 사용자 지정된 필터링 시나리오를 설정하는 방법에 대한 코드 예제 및 설명은 메서드의 오버로드에 대한 topics 참조하세요.

IsAuthorized(WebPart)

컨트롤이 페이지에 추가할 수 있는 컨트롤인지 여부를 확인하기 위한 초기 단계를 수행합니다.

public:
 bool IsAuthorized(System::Web::UI::WebControls::WebParts::WebPart ^ webPart);
public bool IsAuthorized (System.Web.UI.WebControls.WebParts.WebPart webPart);
member this.IsAuthorized : System.Web.UI.WebControls.WebParts.WebPart -> bool
Public Function IsAuthorized (webPart As WebPart) As Boolean

매개 변수

webPart
WebPart

권한이 부여되었는지 확인할 WebPart 또는 다른 서버 컨트롤입니다.

반환

webPart가 페이지에 추가할 수 있는 컨트롤인지 여부를 나타내는 부울 값입니다.

예외

webPart이(가) null인 경우

예제

다음 코드 예제에서는 호출 IsAuthorized(WebPart) 하는 방법을 보여 줍니다는 메서드를 코드에서 컨트롤을 페이지에 추가할 권한이 있는지 여부를 확인 합니다.

이 코드 예제는 세 부분으로 구성 합니다.

  • 메서드를 재정의하는 사용자 지정 WebPartManager 컨트롤입니다 IsAuthorized .

  • 컨트롤에 대한 필터를 만드는 웹 페이지입니다 WebPart .

  • 코드 예제를 실행하는 방법에 대한 설명입니다.

이 코드 예제에서는 오버로드 메서드를 재정의하는 사용자 지정 WebPartManager 컨트롤을 IsAuthorized(Type, String, String, Boolean) 사용하여 속성의 AuthorizationFilter 사용자 지정 처리를 제공합니다. 이 컨트롤은 의 속성 값을 admin 확인하고 값이 있으면 컨트롤에 권한을 부여합니다. 컨트롤에 다른 값이 있으면 권한이 부여되지 않습니다. 속성 값이 없는 컨트롤도 필터링 시나리오의 일부가 아닌 것으로 추정되므로 권한이 부여됩니다.

이 코드 예제를 실행하려면 이 소스 코드를 컴파일해야 합니다. 명시적으로 컴파일하고 결과 어셈블리를 웹 사이트의 Bin 폴더 또는 전역 어셈블리 캐시에 넣을 수 있습니다. 또는 런타임에 동적으로 컴파일되는 사이트의 App_Code 폴더에 소스 코드를 배치할 수 있습니다. 이 코드 예제에서는 동적 컴파일 메서드를 사용합니다. 컴파일 방법을 보여 주는 연습은 연습: 사용자 지정 웹 서버 컨트롤 개발 및 사용을 참조하세요.

using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
  public class MyManagerAuthorize : WebPartManager
  {
    public override bool IsAuthorized(Type type, string path, string authorizationFilter, bool isShared)
    {
      if (!String.IsNullOrEmpty(authorizationFilter))
      {
        if (authorizationFilter == "admin")
          return true;
        else
          return false;
      }
      else
            {
                return true;
            }
        }
  }
}
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyManagerAuthorize
    Inherits WebPartManager

    Public Overrides Function IsAuthorized(ByVal type As Type, _
      ByVal path As String, ByVal authorizationFilter As String, _
      ByVal isShared As Boolean) As Boolean

      If Not String.IsNullOrEmpty(authorizationFilter) Then
        If authorizationFilter = "admin" Then
          Return True
        Else
          Return False
        End If
      Else
        Return True
      End If

    End Function

  End Class

End Namespace

코드 예제의 두 번째 부분은 잠재적으로 컨트롤을 제외할 수 있는 필터를 만듭니다. 다음 웹 페이지에는 요소의 세 ASP.NET 서버 컨트롤이 <asp:webpartzone> 포함되어 있습니다. 첫 번째 및 두 번째 컨트롤에는 해당 AuthorizationFilter 속성이 다른 값으로 설정되고 세 번째 컨트롤은 속성을 할당하지 않습니다. 이 권한 부여 값은 런타임에 확인할 수 있으며 필터가 개발자가 설정한 조건과 일치하는 경우 컨트롤을 페이지에 추가할 수 있습니다. 또한 메서드에서 Page_Load 코드는 메서드를 호출 IsAuthorized(WebPart) 하여 각 컨트롤에 권한이 부여되었는지 여부를 확인하고, 권한이 있는 경우 각 컨트롤의 ExportMode 속성을 설정합니다.

<%@ Page Language="C#" %>
<%@ Register Namespace="Samples.AspNet.CS.Controls" 
    TagPrefix="aspSample"%>


<!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 Page_Load(object sender, EventArgs e)
  {
    foreach (WebPart part in mgr1.WebParts)
    {
      if (mgr1.IsAuthorized(part))
        part.ExportMode = WebPartExportMode.All;
    }
    
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"  />
      <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"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls" 
    TagPrefix="aspSample"%>


<!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 Page_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    Dim part As WebPart
    For Each part In mgr1.WebParts
      If mgr1.IsAuthorized(part) Then
        part.ExportMode = WebPartExportMode.All
      End If
    Next
  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"  />
      <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"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>

코드 예제가 작동하려면 웹 파트 설명 파일을 내보낼 수 있도록 Web.config 파일에 설정을 추가해야 합니다. 이 코드 예제의 웹 페이지와 동일한 디렉터리에 Web.config 파일이 있는지 확인합니다. <system.web> 섹션 내에서 다음 태그와 enableExport 같이 특성이 <webParts> 로 설정된 true요소가 있는지 확인합니다.

<webParts enableExport="true">

...

</webParts>

브라우저에서 페이지를 로드한 후 재정의된 메서드의 조건과 일치하므로 첫 번째 컨트롤이 표시됩니다. 두 번째 컨트롤은 필터에서 제외되므로 페이지에 추가되지 않습니다. 세 번째 컨트롤은 속성 AuthorizationFilter 집합이 없으므로 추가됩니다. 두 컨트롤의 제목 표시줄에서 동사 메뉴 아이콘을 클릭하면 해당 ExportMode 속성 값이 할당되었기 때문에 둘 다 내보낼 수 있습니다.

설명

메서드는 IsAuthorized 웹 파트 컨트롤에 의해 호출 된 초기 메서드는 컨트롤에 대 한 WebPart 권한 부여를 검사 설정 합니다. 매개 변수로 수락 webPart 하고 궁극적으로 컨트롤이 페이지에 추가될지 여부를 결정하는 프로세스를 시작합니다. 지정된 컨트롤에 권한이 부여되었는지 여부를 확인해야 하는 경우 코드에서 이 메서드를 직접 호출합니다.

이 메서드는 컨트롤이 클래스 GenericWebPart 에서 WebPart 상속되는지 아니면 컨트롤인지를 확인하는 초기 작업을 수행하고, 컨트롤이 포함된 자식 컨트롤의 형식을 결정합니다. 권한 부여 작업을 완료하기 위해 오버로드 메서드를 IsAuthorized(Type, String, String, Boolean) 호출합니다.

호출자 참고

이 메서드는 코드에서 직접 호출됩니다. 권한 부여 프로세스에 대한 프로그래밍 방식 제어를 강화하려면 오버로드 메서드를 재정의할 IsAuthorized(Type, String, String, Boolean) 수 있습니다.

추가 정보

적용 대상

IsAuthorized(Type, String, String, Boolean)

컨트롤이 페이지에 추가할 수 있는 컨트롤인지 여부를 확인하기 위한 마지막 단계를 수행합니다.

public:
 virtual bool IsAuthorized(Type ^ type, System::String ^ path, System::String ^ authorizationFilter, bool isShared);
public virtual bool IsAuthorized (Type type, string path, string authorizationFilter, bool isShared);
abstract member IsAuthorized : Type * string * string * bool -> bool
override this.IsAuthorized : Type * string * string * bool -> bool
Public Overridable Function IsAuthorized (type As Type, path As String, authorizationFilter As String, isShared As Boolean) As Boolean

매개 변수

type
Type

권한이 부여되었는지 확인할 컨트롤의 Type입니다.

path
String

컨트롤이 사용자 정의 컨트롤인 경우 권한이 부여될 컨트롤의 소스 파일에 대한 상대 애플리케이션 경로입니다.

authorizationFilter
String

컨트롤이 페이지에 추가할 수 있는 컨트롤인지 여부를 확인하는 데 사용되는 AuthorizationFilter 컨트롤의 WebPart 속성에 할당된 임의의 문자열 값입니다.

isShared
Boolean

권한이 부여되었는지 확인할 컨트롤이 공유 컨트롤인지 여부를 나타냅니다. 즉, 컨트롤이 애플리케이션의 다수 또는 모든 사용자에게 표시되고 IsShared 속성 값이 true로 설정되어 있습니다.

반환

컨트롤이 페이지에 추가할 수 있는 컨트롤인지 여부를 나타내는 부울 값입니다.

예외

type이(가) null인 경우

type이 사용자 정의 컨트롤이고 pathnull이거나 빈 문자열("")인 경우

또는

type이 사용자 정의 컨트롤이 아니고 path에 할당된 값이 있는 경우

예제

다음 코드 예제를 재정의 IsAuthorized 하는 방법을 보여 줍니다는 컨트롤을 페이지에 추가할 권한이 있는지 여부를 확인 하는 방법입니다.

첫 번째 단계는 잠재적으로 컨트롤을 제외할 수 있는 필터를 만드는 것입니다. 다음 웹 페이지에는 요소의 세 ASP.NET 서버 컨트롤이 <asp:webpartzone> 포함되어 있습니다. 첫 번째 및 두 번째 컨트롤에는 해당 AuthorizationFilter 속성이 다른 값으로 설정되고 세 번째 컨트롤은 속성을 할당하지 않습니다. 이 권한 부여 값은 런타임에 확인할 수 있으며 필터가 개발자가 설정한 조건과 일치하는 경우 컨트롤을 페이지에 추가할 수 있습니다.

<%@ Page Language="C#" %>
<%@ Register Namespace="Samples.AspNet.CS.Controls" 
    TagPrefix="aspSample"%>


<!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 Page_Load(object sender, EventArgs e)
  {
    foreach (WebPart part in mgr1.WebParts)
    {
      if (mgr1.IsAuthorized(part))
        part.ExportMode = WebPartExportMode.All;
    }
    
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"  />
      <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"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls" 
    TagPrefix="aspSample"%>


<!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 Page_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    Dim part As WebPart
    For Each part In mgr1.WebParts
      If mgr1.IsAuthorized(part) Then
        part.ExportMode = WebPartExportMode.All
      End If
    Next
  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <aspSample:MyManagerAuthorize ID="mgr1" runat="server"  />
      <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"
            AuthorizationFilter="user" />
          <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>

두 번째 단계는 메서드를 재정의 IsAuthorized(Type, String, String, Boolean) 하고 권한 부여 필터에 대한 사용자 지정 처리를 만드는 것입니다. 코드는 먼저 속성을 할당하지 않는 컨트롤이 자동으로 추가되도록 속성에 AuthorizationFilter 값이 있는지 여부를 확인합니다. 컨트롤에 필터가 있는 경우 코드는 필터 값이 와 같은 경우에만 를 반환 true 합니다 admin. 이는 역할에 따라 특정 컨트롤을 특정 사용자에게 표시하는 데 사용할 수 있는 간단한 메커니즘을 보여 줍니다. 역할을 사용하는 전체 예제는 이 항목의 scope 벗어나지만 현재 사용자가 권한 부여 필터 값과 일치하는 역할에 있는지 여부를 검사 해당 사용자에 대해서만 컨트롤을 추가할 수 있다는 점을 제외하고 이 코드 예제에서 재정의된 메서드와 동일한 논리를 사용할 수 있습니다. 이렇게 하면 일부 사용자에게 모든 컨트롤이 표시되고 다른 사용자에게는 선택한 컨트롤만 표시되는 페이지를 만들 수 있습니다. 역할을 사용한 경우 필터를 확인하는 논리가 다음과 같이 표시될 수 있습니다.

If Roles.IsUserInRole(Page.User.Identity.Name, authorizationFilter) Then  
  return True  
Else  
  return False  
End If  
if(Roles.IsUserInRole(Page.User.Identity.Name, authorizationFilter))  
    return true;  
else  
    return false;  

코드 예제를 실행하려면 이 소스 코드를 컴파일해야 합니다. 명시적으로 컴파일하고 결과 어셈블리를 웹 사이트의 Bin 폴더 또는 전역 어셈블리 캐시에 넣을 수 있습니다. 또는 런타임에 동적으로 컴파일되는 사이트의 App_Code 폴더에 소스 코드를 배치할 수 있습니다. 이 코드 예제에서는 동적 컴파일 메서드를 사용합니다. 컴파일 방법을 보여 주는 연습은 연습: 사용자 지정 웹 서버 컨트롤 개발 및 사용을 참조하세요.

using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
  public class MyManagerAuthorize : WebPartManager
  {
    public override bool IsAuthorized(Type type, string path, string authorizationFilter, bool isShared)
    {
      if (!String.IsNullOrEmpty(authorizationFilter))
      {
        if (authorizationFilter == "admin")
          return true;
        else
          return false;
      }
      else
            {
                return true;
            }
        }
  }
}
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyManagerAuthorize
    Inherits WebPartManager

    Public Overrides Function IsAuthorized(ByVal type As Type, _
      ByVal path As String, ByVal authorizationFilter As String, _
      ByVal isShared As Boolean) As Boolean

      If Not String.IsNullOrEmpty(authorizationFilter) Then
        If authorizationFilter = "admin" Then
          Return True
        Else
          Return False
        End If
      Else
        Return True
      End If

    End Function

  End Class

End Namespace

브라우저에서 페이지를 로드한 후 재정의된 메서드의 조건과 일치하므로 첫 번째 컨트롤이 표시됩니다. 필터 값이 제외되므로 두 번째 컨트롤은 페이지에 추가되지 않습니다. 세 번째 컨트롤은 속성 AuthorizationFilter 집합이 없으므로 추가됩니다. 첫 번째 컨트롤과 일치하도록 두 번째 컨트롤의 속성 값을 변경한 다음 페이지를 다시 실행하면 두 번째 컨트롤도 추가됩니다.

설명

오버로드 메서드는 IsAuthorized(Type, String, String, Boolean) 컨트롤이 페이지에 추가될 수 있는 권한이 있는지 여부를 결정하는 마지막 단계를 수행합니다. 메서드는 가 type 유효한 형식이고 확인 중인 컨트롤이 path 사용자 컨트롤인 경우에만 값이 있는지 확인합니다. 그런 다음 이벤트를 발생시키는 중요한 OnAuthorizeWebPart 메서드를 AuthorizeWebPart 호출합니다.

상속자 참고

권한 부여를 확인할 때 추가 처리를 제공하려는 경우 클래스에서 WebPartManager 상속하여 이 메서드를 재정의할 수 있습니다. 매개 변수의 특정 값에 대해 검사 메서드를 재정의 authorizationFilter 하고 값에 따라 컨트롤을 페이지에 추가할지 여부를 결정하는 부울 값을 반환할 수 있습니다.

권한 부여 필터를 검사 사용자 지정 처리를 제공하려는 페이지 개발자의 경우 클래스에서 상속할 필요 없이 .aspx 페이지 또는 코드 숨김 파일에서 이 인라인 작업을 수행하는 옵션이 있습니다. 컨트롤의 메서드에 대한 페이지에서 대체 이벤트 처리기를 선언할 OnAuthorizeWebPart(WebPartAuthorizationEventArgs) 수 있습니다 WebPartManager . 자세한 내용과 예제는 메서드를 참조하세요 OnAuthorizeWebPart(WebPartAuthorizationEventArgs) .

추가 정보

적용 대상