Clase AuthorizationContext
Describe el contexto en el que se lleva a cabo la autorización.
Espacio de nombres: System.ComponentModel.DataAnnotations
Ensamblado: System.ServiceModel.DomainServices.Server (en system.servicemodel.domainservices.server.dll)
Uso
'Uso
Dim instance As AuthorizationContext
Sintaxis
'Declaración
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
Ejemplo
El ejemplo siguiente muestra una implementación de la clase AuthorizationAttribute que utiliza un valor de AuthorizationContext para personalizar la autenticación.
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.");
}
}
}
Notas
Esta clase contiene información que describe la instancia y la operación que se va a autorizar. Implementa IDisposable y se debe eliminar debidamente tras su utilización. Admite IServiceProvider de forma que el código de validación pueda adquirir servicios adicionales con el fin de contribuir en su validación.
Se encuentra disponible un contenedor de la propiedad Items para ofrecer información contextual adicional sobre la autorización. Los valores que se almacenan en Items estarán disponibles para los métodos de autorización que usa esta clase AuthorizationContext.
Asimismo, esta clase proporciona una implementación de IServiceContainer para que los desarrolladores puedan agregar servicios al contexto en tiempo de ejecución. Este contenedor se encuentra disponible si se llama al método GetService y se proporciona el tipo de IServiceContainer o bien, si se utiliza la propiedad ServiceContainer.
El tipo de objeto en la propiedad Instance es el tipo de la entidad involucrada en la operación. Para operaciones de consulta, la propiedad Instance es null.
Jerarquía de herencia
System.Object
System.ComponentModel.DataAnnotations.AuthorizationContext
Seguridad para subprocesos
Cualquier miembro estático público (Compartidos en Visual Basic) de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.
Plataformas
Plataformas de desarrollo
Microsoft Windows XP Home Edition, Windows XP Professional, Windows Server 2003 , Windows Server 2008 y Windows 2000
Plataformas de destino
Change History
Vea también
Referencia
Miembros AuthorizationContext
Espacio de nombres System.ComponentModel.DataAnnotations