模块  java.base
软件包  java.security

Class AccessControlContext


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

    更具体地说,它封装了一个上下文,并且有一个方法, checkPermission ,相当于AccessController类中的checkPermission方法,但有一点不同: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)
        使用给定的ProtectionDomain数组创建AccessControlContext。 上下文不能为null。 将从上下文中删除重复的域。
        参数
        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 - 如果要检查的权限为null。
      • equals

        public boolean equals​(Object obj)
        检查两个AccessControlContext对象是否相等。 检查obj是否为AccessControlContext,并且具有与此上下文相同的ProtectionDomain集。
        重写:
        equalsObject
        参数
        obj - 我们正在测试与此对象相等的对象。
        结果
        如果 obj是AccessControlContext,并且与此上下文具有相同的ProtectionDomains集,则返回true,否则返回false。
        另请参见:
        Object.hashCode()HashMap