Proprietà AuthorizationContext.Instance
Ottiene l'istanza dell'oggetto autorizzata.
Spazio dei nomi: System.ComponentModel.DataAnnotations
Assembly: System.ServiceModel.DomainServices.Server (in system.servicemodel.domainservices.server.dll)
Utilizzo
'Utilizzo
Dim instance As AuthorizationContext
Dim value As Object
value = instance.Instance
Sintassi
'Dichiarazione
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
Valore proprietà
Istanza dell'oggetto autorizzata.
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
Utilizzare la proprietà Instance per recuperare l'oggetto entità interessato dall'autorizzazione. La proprietà Instance è null quando non è disponibile alcuna istanza dell'oggetto, ad esempio in caso di autorizzazione di query o di verifica della possibilità di eseguire un'operazione. Quando si crea una classe che deriva dalla classe AuthorizationAttribute, controllare se la proprietà Instance è null durante l'implementazione del processo di autorizzazione personalizzato.
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
Classe AuthorizationContext
Membri AuthorizationContext
Spazio dei nomi System.ComponentModel.DataAnnotations