- java.lang.Object
-
- java.security.AccessControlContext
-
public final class AccessControlContext extends Object
AccessControlContext用于根据其封装的上下文来进行系统资源访问决策。更具体地,它封装了一个上下文,并且具有单一的方法,
checkPermission
,即相当于checkPermission
在AccessController类方法,有一点不同:所述的AccessControlContextcheckPermission
方法使得访问决策基于它所封装的上下文,而不是的当前执行线程。因此,AccessControlContext的目的是针对那些在给定上下文中应该进行安全检查的情况实际上需要从不同的上下文(例如,从工作线程)内完成的情况。
通过调用
AccessController.getContext
方法创建一个AccessControlContext。getContext
方法使用当前调用上下文的“快照”,并将其放置在AccessControlContext对象中,该对象返回。 示例呼叫如下:AccessControlContext acc = AccessController.getContext()
随后可以在先前保存的AccessControlContext对象中调用
checkPermission
方法。 示例呼叫如下:acc.checkPermission(permission)
- 从以下版本开始:
- 1.2
- 另请参见:
-
AccessController
-
-
构造方法摘要
构造方法 Constructor 描述 AccessControlContext(AccessControlContext acc, DomainCombiner combiner)
创建一个新的AccessControlContext
与给定的AccessControlContext
和DomainCombiner
。AccessControlContext(ProtectionDomain[] context)
使用给定的ProtectionDomains数组创建一个AccessControlContext。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
checkPermission(Permission perm)
根据当前有效的安全策略以及此对象中的上下文确定是否允许或拒绝由指定权限指定的访问请求。boolean
equals(Object obj)
检查两个AccessControlContext对象的相等性。DomainCombiner
getDomainCombiner()
获取DomainCombiner
与此AccessControlContext
相关联。int
hashCode()
返回此上下文的哈希码值。
-
-
-
构造方法详细信息
-
AccessControlContext
public AccessControlContext(ProtectionDomain[] context)
使用给定的ProtectionDomains数组创建一个AccessControlContext。 上下文不能为空。 重复的域将从上下文中删除。- 参数
-
context
- 与此上下文相关联的ProtectionDomains。 不重复的域从数组复制。 对数组的后续更改不会影响此AccessControlContext。 - 异常
-
NullPointerException
- 如果context
是null
-
AccessControlContext
public AccessControlContext(AccessControlContext acc, DomainCombiner combiner)
创建一个新的AccessControlContext
与给定的AccessControlContext
和DomainCombiner
。 此构造函数将所提供的DomainCombiner
与所提供的AccessControlContext
相关联。- 参数
-
acc
-在AccessControlContext
与所提供的相关DomainCombiner
。 -
combiner
- 要与DomainCombiner
相关联的AccessControlContext
。 - 异常
-
NullPointerException
- 如果提供的context
是null
。 -
SecurityException
- 如果安装了一个安全管理器,并且调用者没有“createAccessControlContext”SecurityPermission
- 从以下版本开始:
- 1.3
-
-
方法详细信息
-
getDomainCombiner
public DomainCombiner getDomainCombiner()
获取DomainCombiner
与此AccessControlContext
相关联。- 结果
-
在
DomainCombiner
与此相关AccessControlContext
,或null
如果是没有的。 - 异常
-
SecurityException
- 如果安装了一个安全管理器,并且调用者没有“getDomainCombiner”SecurityPermission
- 从以下版本开始:
- 1.3
-
checkPermission
public void checkPermission(Permission perm) throws AccessControlException
根据当前有效的安全策略以及此对象中的上下文确定是否允许或拒绝由指定权限指定的访问请求。 仅当上下文中的每个ProtectionDomain意味着权限时,才允许该请求。 否则请求被拒绝。如果允许访问请求,此方法静默返回,否则抛出适当的AccessControlException。
- 参数
-
perm
- 请求的权限。 - 异常
-
AccessControlException
- 如果不允许指定的权限,则基于当前安全策略和此对象封装的上下文。 -
NullPointerException
- 如果检查的权限为空。
-
equals
public boolean equals(Object obj)
检查两个AccessControlContext对象的相等性。 检查obj
是AccessControlContext,并具有与此上下文相同的ProtectionDomains集。- 重写:
-
equals
在Object
- 参数
-
obj
- 我们正在测试与此对象相等的对象。 - 结果
-
如果
obj
是AccessControlContext,obj
true,并且与此上下文具有相同的ProtectionDomain集合,否则为false。 - 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
返回此上下文的哈希码值。 哈希码是通过将上下文中所有保护域的哈希码排除在一起来计算的。- 重写:
-
hashCode
在Object
- 结果
- 这个上下文的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-