다음을 통해 공유


AuthorizationContext.Instance 속성

권한이 부여되는 개체 인스턴스를 가져옵니다.

네임스페이스: System.ComponentModel.DataAnnotations
어셈블리: system.servicemodel.domainservices.server.dll의 System.ServiceModel.DomainServices.Server

사용법

‘사용 방법
Dim instance As AuthorizationContext
Dim value As Object

value = instance.Instance

구문

‘선언
Public ReadOnly Property Instance As Object
public Object Instance { get; }
public:
property Object^ Instance {
    Object^ get ();
}
/** @property */
public Object get_Instance ()
public function get Instance () : Object

속성 값

권한이 부여되는 개체 인스턴스입니다.

예제

다음 예제에서는 AuthorizationContext 값을 사용하여 인증을 사용자 지정하는 AuthorizationAttribute 구현을 보여 줍니다.

Public Class RestrictAccessToAssignedManagers
    Inherits AuthorizationAttribute

    Protected Overrides Function IsAuthorized(ByVal principal As System.Security.Principal.IPrincipal, ByVal authorizationContext As System.ComponentModel.DataAnnotations.AuthorizationContext) As System.ComponentModel.DataAnnotations.AuthorizationResult
        Dim eph As EmployeePayHistory
        Dim selectedEmployee As Employee
        Dim authenticatedUser As Employee

        eph = CType(authorizationContext.Instance, EmployeePayHistory)
            
        Using context As New AdventureWorksEntities()
            selectedEmployee = context.Employees.SingleOrDefault(Function(e) e.EmployeeID = eph.EmployeeID)
            authenticatedUser = context.Employees.SingleOrDefault(Function(e) e.LoginID = principal.Identity.Name)
        End Using

        If (selectedEmployee.ManagerID = authenticatedUser.EmployeeID) Then
            Return AuthorizationResult.Allowed
        Else
            Return New AuthorizationResult("Only the authenticated manager for the employee can add a new record.")
        End If
    End Function
End Class
public class RestrictAccessToAssignedManagers : AuthorizationAttribute
{
    protected override AuthorizationResult IsAuthorized(System.Security.Principal.IPrincipal principal, AuthorizationContext authorizationContext)
    {
        EmployeePayHistory eph = (EmployeePayHistory)authorizationContext.Instance;
        Employee selectedEmployee;
        Employee authenticatedUser;

        using (AdventureWorksEntities context = new AdventureWorksEntities())
        {
            selectedEmployee = context.Employees.SingleOrDefault(e => e.EmployeeID == eph.EmployeeID);
            authenticatedUser = context.Employees.SingleOrDefault(e => e.LoginID == principal.Identity.Name);
        }

        if (selectedEmployee.ManagerID == authenticatedUser.EmployeeID)
        {
            return AuthorizationResult.Allowed;
        }
        else
        {
            return new AuthorizationResult("Only the authenticated manager for the employee can add a new record.");
        }
    }
}

설명

Instance 속성을 사용하여 권한 부여에 관련된 엔터티 개체를 검색합니다. 개체 인스턴스를 사용할 수 없는 경우(예: 쿼리에 권한을 부여하거나 작업을 시도할 수 있는지 여부를 평가하는 경우) Instance 속성은 null입니다. AuthorizationAttribute 클래스에서 파생되는 클래스를 만드는 경우 사용자 지정 권한 부여 프로세스를 구현할 때 Instance 속성이 null인지 여부를 확인합니다.

스레드 보안

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 모든 인스턴스 멤버는 스레드로부터 안전하지 않을 수 있습니다.

플랫폼

개발 플랫폼

Windows XP Home Edition, Windows XP Professional, Windows Server 2003 , Windows Server 2008 및 Windows 2000

대상 플랫폼

Change History

참고 항목

참조

AuthorizationContext 클래스
AuthorizationContext 멤버
System.ComponentModel.DataAnnotations 네임스페이스