java.security

接口
异常
java.lang.Object
  继承者 java.security.AccessControlContext

public final class AccessControlContext
     
extends Object

AccessControlContext 用于基于它所封装的上下文作出系统资源访问决定。

更确切地说,它封装一个上下文并且具有单个方法 (checkPermission),该方法等效于 AccessController 类中的 checkPermission 方法,只有一个不同点:AccessControlContext 的 checkPermission 方法基于它所封装的上下文而不是当前执行线程的上下文作出访问决定。

因此,AccessControlContext 的目的是用于那些实际需要在另一个 上下文(例如,在 worker 线程中)中执行应该在给定上下文中进行的安全检查的情形下。

AccessControlContext 通过调用 AccessController.getContext 方法创建。getContext 方法获取当前调用上下文“快照”,并将其置于它所返回的 AccessControlContext 对象中。示例调用如下:

 
   AccessControlContext acc = AccessController.getContext()
 
 

另一上下文中的代码可以随后在以前保存的 AccessControlContext 对象上调用 checkPermission 方法。示例调用如下:

 
   acc.checkPermission(permission)
 
 

另请参见:
AccessController

构造方法摘要
AccessControlContext(AccessControlContext acc, DomainCombiner combiner)
          创建具有给定 AccessControlContextDomainCombiner 的新 AccessControlContext
AccessControlContext(ProtectionDomain[] context)
          创建带有给定 ProtectionDomain 集合的 AccessControlContext。
 
方法摘要
 void checkPermission(Permission perm)
          基于当前生效的安全策略和此对象中的上下文确定是否允许指定权限指示的访问请求。
 boolean equals(Object obj)
          检查两个 AccessControlContext 对象是否相等。
 DomainCombiner getDomainCombiner()
          获取与此 AccessControlContext 关联的 DomainCombiner
 int hashCode()
          返回此上下文的哈希码值。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

AccessControlContext

public AccessControlContext(ProtectionDomain[] context)
创建带有给定 ProtectionDomain 集合的 AccessControlContext。上下文不能为 null。重复的域将从上下文中被移除。

参数:
context - 与此上下文关联的 ProtectionDomain。从数组复制非重复域。数组的后续更改对此 AccessControlContext 没有影响。

AccessControlContext

public AccessControlContext(AccessControlContext acc,
                            DomainCombiner combiner)
创建具有给定 AccessControlContextDomainCombiner 的新 AccessControlContext。此构造方法将提供的 DomainCombiner 与提供的 AccessControlContext 关联起来。

参数:
acc - 与此提供的 DomainCombiner 关联的 AccessControlContext

combiner - 要与提供的 AccessControlContext 关联的 DomainCombiner
抛出:
NullPointerException - 如果提供的 contextnull

SecurityException - 如果调用者没有调用此构造方法的权限。
从以下版本开始:
1.3
方法详细信息

getDomainCombiner

public DomainCombiner getDomainCombiner()
获取与此 AccessControlContext 关联的 DomainCombiner

返回:
与此 AccessControlContext 关联的 DomainCombiner;如果关联项不存在,则返回 null
抛出:
SecurityException - 如果调用者没有获取与此 AccessControlContext 关联的 DomainCombiner 的权限。
从以下版本开始:
1.3

checkPermission

public void checkPermission(Permission perm)
                     throws AccessControlException
基于当前生效的安全策略和此对象中的上下文确定是否允许指定权限指示的访问请求。只有在上下文中每个 ProtectionDomain 都隐含该权限时,才允许该请求。否则拒绝该请求。

如果允许访问请求,则此方法正常返回;否则抛出适当的 AccessControlException。

参数:
perm - 请求的权限。
抛出:
AccessControlException - 如果基于当前的安全策略和此对象所封装的上下文不允许指定权限。
NullPointerException - 如果要检查的权限为 null。

equals

public boolean equals(Object obj)
检查两个 AccessControlContext 对象是否相等。检查 obj 是否为 AccessControlContext 且具有与此上下文相同的 ProtectionDomain 集合。

覆盖:
Object 中的 equals
参数:
obj - 要与此对象进行相等性测试的对象。
返回:
如果 obj 为 AccessControlContext 且具有与此上下文相同的 ProtectionDomain 集合,则返回 true;否则返回 false。
另请参见:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此上下文的哈希码值。该哈希码是通过对上下文中所有保护域的哈希码进行异或计算得到的。

覆盖:
Object 中的 hashCode
返回:
此上下文的哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable