다음을 통해 공유


AuthorizationContext 클래스

권한 부여가 수행되는 컨텍스트를 설명합니다.

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

사용법

‘사용 방법
Dim instance As AuthorizationContext

구문

‘선언
Public NotInheritable Class AuthorizationContext
    Implements IServiceProvider, IDisposable
public sealed class AuthorizationContext : IServiceProvider, IDisposable
public ref class AuthorizationContext sealed : IServiceProvider, IDisposable
public final class AuthorizationContext implements IServiceProvider, IDisposable
public final class AuthorizationContext implements IServiceProvider, IDisposable

예제

다음 예제에서는 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.");
        }
    }
}

설명

이 클래스에는 권한이 부여되는 인스턴스와 작업을 설명하는 정보가 포함됩니다. 이 클래스는 IDisposable을 구현하며 사용 후에 제대로 삭제되어야 합니다. 사용자 지정 유효성 검사 코드가 유효성 검사에 유용한 추가 서비스를 얻을 수 있도록 이 클래스는 IServiceProvider를 지원합니다.

권한 부여에 대한 추가 컨텍스트 정보를 위해 Items 속성 모음을 사용할 수 있습니다. 이 AuthorizationContext를 사용하는 권한 부여 메서드는 Items에 저장된 값을 사용할 수 있습니다.

또한 이 클래스는 개발자가 런타임에 컨텍스트에 서비스를 추가할 수 있도록 IServiceContainer 구현을 제공합니다. GetService 메서드를 호출하고 IServiceContainer의 형식을 제공하거나 ServiceContainer 속성을 사용하여 이 컨테이너를 사용할 수 있습니다.

Instance 속성의 개체 형식은 작업에 관련된 엔터티의 형식입니다. 쿼리 작업의 경우 Instance 속성은 null입니다.

상속 계층

System.Object
  System.ComponentModel.DataAnnotations.AuthorizationContext

스레드 보안

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

플랫폼

개발 플랫폼

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

대상 플랫폼

Change History

참고 항목

참조

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