AuthorizationContext-Klasse

Beschreibt den Kontext, in dem eine Autorisierung ausgeführt wird.

Namespace: System.ComponentModel.DataAnnotations
Assembly: System.ServiceModel.DomainServices.Server (in system.servicemodel.domainservices.server.dll)

Verwendung

'Usage
Dim instance As AuthorizationContext

Syntax

'Declaration
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

Beispiel

Im folgenden Beispiel wird eine Implementierung von AuthorizationAttribute veranschaulicht, die einen AuthorizationContext-Wert verwendet, um die Authentifizierung anzupassen.

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.");
        }
    }
}

Hinweise

Diese Klasse enthält Informationen, die die Instanz und den Vorgang beschreiben, der autorisiert wird. Sie implementiert IDisposable und muss nach der Verwendung ordnungsgemäß freigegeben werden. Sie unterstützt IServiceProvider, damit in benutzerdefiniertem Validierungscode zusätzliche Dienste abgerufen werden können, die für die Validierung benötigt werden.

Eine Items-Eigenschaftensammlung mit zusätzlichen Kontextinformationen zur Autorisierung ist verfügbar. In Items gespeicherte Werte stehen Autorisierungsmethoden zur Verfügung, die diesen AuthorizationContext verwenden.

Diese Klasse stellt außerdem eine IServiceContainer-Implementierung bereit, sodass dem Kontext zur Laufzeit Dienste hinzugefügt werden können. Dieser Container ist über einen Aufruf der GetService-Methode verfügbar, der den Typ von IServiceContainer bereitstellt oder die ServiceContainer-Eigenschaft verwendet.

Der Typ des Objekts in der Instance-Eigenschaft ist der Typ der am Vorgang beteiligten Entität. Für Abfragevorgänge ist die Instance-Eigenschaft NULL.

Vererbungshierarchie

System.Object
  System.ComponentModel.DataAnnotations.AuthorizationContext

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht sichergestellt.

Plattformen

Entwicklungsplattformen

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

Zielplattformen

Change History

Siehe auch

Verweis

AuthorizationContext-Member
System.ComponentModel.DataAnnotations-Namespace