AuthorizationContext 類別
描述正在執行授權的內容。
命名空間: System.ComponentModel.DataAnnotations
組件: System.ServiceModel.DomainServices.Server (於 system.servicemodel.domainservices.server.dll)
使用方式
'用途
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
範例
下列範例示範 AuthorizationAttribute 的實作,該實作會使用 AuthorizationContext 值來自訂驗證。
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 屬性包可供有關授權的其他內容資訊使用。Items 中所儲存的值將可供使用這個 AuthorizationContext 的授權方法使用。
這個類別也會提供 IServiceContainer 實作,好讓開發人員在執行階段將服務加入至內容。您可藉由呼叫 GetService 方法及提供 IServiceContainer 的型別或是使用 ServiceContainer 屬性來提供這個容器。
Instance 屬性中物件的型別是有關作業之實體的型別。如果是查詢作業,Instance 屬性為 null。
繼承階層
System.Object
System.ComponentModel.DataAnnotations.AuthorizationContext
執行緒安全性
任何這個類型的公用靜態 (在 Visual Basic 中為 共用) 成員都具備執行緒安全。 不保證任何執行個體成員安全執行緒。
平台
開發平台
Windows XP Home Edition, Windows XP Professional, Windows Server 2003 、Windows Server 2008 和 Windows 2000
目標平台
Change History
另請參閱
參考
AuthorizationContext 成員
System.ComponentModel.DataAnnotations 命名空間