Classe AuthorizationContext
Descrive il contesto in cui viene eseguita un'autorizzazione.
Spazio dei nomi: System.ComponentModel.DataAnnotations
Assembly: System.ServiceModel.DomainServices.Server (in system.servicemodel.domainservices.server.dll)
Utilizzo
'Utilizzo
Dim instance As AuthorizationContext
Sintassi
'Dichiarazione
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
Esempio
Nell'esempio seguente viene illustrata un'implementazione dell'oggetto AuthorizationAttribute che utilizza un valore AuthorizationContext per personalizzare l'autenticazione.
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.");
}
}
}
Osservazioni
Questa classe contiene informazioni che descrivono l'istanza e l'operazione autorizzate. Implementa IDisposable e deve essere eliminato correttamente dopo l'utilizzo. Supporta IServiceProvider in modo da consentire al codice di convalida personalizzato di acquisire servizi aggiuntivi per agevolare l'esecuzione della convalida.
Un contenitore della proprietà Items è disponibile per informazioni contestuali aggiuntive sull'autorizzazione. I valori archiviati in Items saranno disponibili per i metodi di autorizzazione che utilizzano questo oggetto AuthorizationContext.
Questa classe fornisce inoltre un'implementazione IServiceContainer per consentire agli sviluppatori di aggiungere servizi al contesto in fase di esecuzione. Questo contenitore è disponibile chiamando il metodo GetService e fornendo il tipo di IServiceContainer oppure utilizzando la proprietà ServiceContainer.
Il tipo dell'oggetto nella proprietà Instance è il tipo dell'entità interessata dall'operazione. Per le operazioni di query, la proprietà Instance è null.
Gerarchia di ereditarietà
System.Object
System.ComponentModel.DataAnnotations.AuthorizationContext
Sicurezza dei thread
Tutti i membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è invece garantita la sicurezza dei membri dell'istanza.
Piattaforme
Piattaforme di sviluppo
Windows XP Home Edition, Windows XP Professional, Windows Server 2003 , Windows Server 2008 e Windows 2000
Piattaforme di destinazione
Change History
Vedere anche
Riferimento
Membri AuthorizationContext
Spazio dei nomi System.ComponentModel.DataAnnotations