- java.lang.Object
-
- java.security.AccessControlContext
-
public final class AccessControlContext extends Object
AccessControlContext用于根据其封装的上下文做出系统资源访问决策。更具体地说,它封装了一个上下文,并且有一个方法,
checkPermission
,相当于AccessController类中的checkPermission
方法,但有一点不同:AccessControlContextcheckPermission
方法根据它封装的上下文而不是当前执行线程。因此,AccessControlContext的目的是针对那些应该在给定上下文中进行的安全检查实际上需要在不同的上下文中完成的情况(例如,来自工作线程内)。
通过调用
AccessController.getContext
方法创建AccessControlContext。getContext
方法获取当前调用上下文的“快照”,并将其放在AccessControlContext对象中,并返回该对象。 示例调用如下:AccessControlContext acc = AccessController.getContext()
随后,不同上下文中的代码可以在先前保存的AccessControlContext对象上调用
checkPermission
方法。 示例调用如下:acc.checkPermission(permission)
- 从以下版本开始:
- 1.2
- 另请参见:
-
AccessController
-
-
构造方法摘要
构造方法 构造器 描述 AccessControlContext(AccessControlContext acc, DomainCombiner combiner)
创建一个新的AccessControlContext
给定AccessControlContext
和DomainCombiner
。AccessControlContext(ProtectionDomain[] context)
使用给定的ProtectionDomain数组创建AccessControlContext。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 void
checkPermission(Permission perm)
根据当前有效的安全策略以及此对象中的上下文,确定是允许还是拒绝由指定权限指示的访问请求。boolean
equals(Object obj)
检查两个AccessControlContext对象是否相等。DomainCombiner
getDomainCombiner()
获取DomainCombiner
与此相关AccessControlContext
。int
hashCode()
返回此上下文的哈希码值。
-
-
-
构造方法详细信息
-
AccessControlContext
public AccessControlContext(ProtectionDomain[] context)
使用给定的ProtectionDomain数组创建AccessControlContext。 上下文不能为null。 将从上下文中删除重复的域。- 参数
-
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
- 如果要检查的权限为null。
-
equals
public boolean equals(Object obj)
检查两个AccessControlContext对象是否相等。 检查obj
是否为AccessControlContext,并且具有与此上下文相同的ProtectionDomain集。- 重写:
-
equals
类Object
- 参数
-
obj
- 我们正在测试与此对象相等的对象。 - 结果
-
如果
obj
是AccessControlContext,并且与此上下文具有相同的ProtectionDomains集,则返回true,否则返回false。 - 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
返回此上下文的哈希码值。 通过一起排除上下文中所有保护域的哈希码来计算哈希码。- 重写:
-
hashCode
在类Object
- 结果
- 此上下文的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-