ClaimsPrincipalPermission.Demand 方法

定义

检查当前主体是否获得与当前实例关联的资源操作对的授权。

public:
 virtual void Demand();
public void Demand ();
abstract member Demand : unit -> unit
override this.Demand : unit -> unit
Public Sub Demand ()

实现

例外

当前主体无法从 ClaimsPrincipal 进行分配。

- 或 -

没有配置的 ClaimsAuthorizationManager

授权检查已失败。

示例

以下示例演示如何使用 Demand 方法保护资源。 调用配置的声明授权管理器,以针对指定的资源和操作评估当前主体。 如果当前主体未获得针对指定资源上的指定操作的授权, SecurityException 则会引发 ;否则,执行将继续。

//
// Method 2. Programmatic check using the permission class
// Follows model found at http://msdn.microsoft.com/library/system.security.permissions.principalpermission.aspx
//
ClaimsPrincipalPermission cpp = new ClaimsPrincipalPermission("resource", "action");
cpp.Demand();

注解

必须为与此实例关联的所有资源操作对授权当前主体, SecurityException 否则将引发异常。

尽管构造函数仅采用单个资源和操作,ClaimsPrincipalPermission但对象可以通过 和 Intersect 方法进行组合Union。 通过这些方法创建的权限可能包含多个资源操作对。

方法Demand使用由活动主体 () CurrentPrincipal 、资源以及权限中包含的每个资源操作对的操作组成的 调用ClaimsAuthorizationManager.CheckAccess已配置的声明授权管理器AuthorizationContext的 方法。 若要使 成功, Demand 必须为权限中包含的所有资源操作对授权活动主体。

适用于