Module  java.base
软件包  java.security

Class AccessControlContext



  • public final class AccessControlContext
    extends Object
    AccessControlContext用于根据其封装的上下文来进行系统资源访问决策。

    更具体地,它封装了一个上下文,并且具有单一的方法, checkPermission ,即相当于checkPermission在AccessController类方法,有一点不同:所述的AccessControlContext checkPermission方法使得访问决策基于它所封装的上下文,而不是的当前执行线程。

    因此,AccessControlContext的目的是针对那些在给定上下文中应该进行安全检查的情况实际上需要从不同的上下文(例如,从工作线程)内完成的情况。

    通过调用AccessController.getContext方法创建一个AccessControlContext。 getContext方法使用当前调用上下文的“快照”,并将其放置在AccessControlContext对象中,该对象返回。 示例呼叫如下:

      AccessControlContext acc = AccessController.getContext() 

    随后可以在先前保存的AccessControlContext对象中调用checkPermission方法。 示例呼叫如下:

      acc.checkPermission(permission) 
    从以下版本开始:
    1.2
    另请参见:
    AccessController
    • 构造方法详细信息

      • AccessControlContext

        public AccessControlContext​(ProtectionDomain[] context)
        使用给定的ProtectionDomains数组创建一个AccessControlContext。 上下文不能为空。 重复的域将从上下文中删除。
        参数
        context - 与此上下文相关联的ProtectionDomains。 不重复的域从数组复制。 对数组的后续更改不会影响此AccessControlContext。
        异常
        NullPointerException - 如果 contextnull
      • AccessControlContext

        public AccessControlContext​(AccessControlContext acc,
                                    DomainCombiner combiner)
        创建一个新的AccessControlContext与给定的AccessControlContextDomainCombiner 此构造函数将所提供的DomainCombiner与所提供的AccessControlContext相关联。
        参数
        acc -在 AccessControlContext与所提供的相关 DomainCombiner
        combiner - 要与 DomainCombiner相关联的 AccessControlContext
        异常
        NullPointerException - 如果提供的 contextnull
        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集。
        重写:
        equalsObject
        参数
        obj - 我们正在测试与此对象相等的对象。
        结果
        如果 obj是AccessControlContext, obj true,并且与此上下文具有相同的ProtectionDomain集合,否则为false。
        另请参见:
        Object.hashCode()HashMap