Класс AccessControlContext
- java.lang.Object
-
- java.security.AccessControlContext
public final class AccessControlContext extends Object
Класс AccessControlContext используется для принятия решений об доступе к системным ресурсам на основе контекста, который он инкапсулирует.
Более конкретно, он инкапсулирует контекст и имеет единственный метод, checkPermission, который эквивалентен методу checkPermission в классе AccessController, с одним отличием: метод AccessControlContext checkPermission принимает решения об доступе, основываясь на инкапсулированном контексте, а не на контексте текущей потока выполнения.
Таким образом, AccessControlContext предназначен для тех ситуаций, когда проверка безопасности, которая должна быть выполнена в заданном контексте, фактически должна быть выполнена из другого контекста (например, из потока-работника).
Объект AccessControlContext создаётся путём вызова метода AccessController.getContext. Метод getContext создаёт "снимок" текущего контекста вызова и помещает его в объект AccessControlContext, который он возвращает. Пример вызова выглядит так:
AccessControlContext acc = AccessController.getContext()
Код в другом контексте может впоследствии вызвать метод checkPermission на ранее сохранённом объекте AccessControlContext. Пример вызова выглядит так:
acc.checkPermission(permission)
- См. также:
AccessController
Конструкторы
| Конструктор и описание |
|---|
AccessControlContext(AccessControlContext acc,
DomainCombiner combiner) Создаёт новый |
AccessControlContext(ProtectionDomain[] context) Создаёт AccessControlContext с заданным массивом ProtectionDomains. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
checkPermission(Permission perm) Определяет, следует ли разрешить или запретить запрос доступа, указанный заданным разрешением, на основе текущей политики безопасности и контекста в этом объекте. Запрос разрешён только в том случае, если каждый ProtectionDomain в контексте подразумевает разрешение. В противном случае запрос отклоняется. |
boolean |
equals(Object obj) Сравнивает два объекта AccessControlContext на равенство. |
DomainCombiner |
getDomainCombiner() Получить |
int |
hashCode() Возвращает значение хэш-кода для этого контекста. |
Методы, унаследованные от класса java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait Конструкторы
AccessControlContext
public AccessControlContext(ProtectionDomain[] context)
Создаёт AccessControlContext с заданным массивом ProtectionDomains. Контекст не должен быть 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 и имеет тот же набор ProtectionDomains, что и этот контекст.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект, с которым мы проверяем равенство с этим объектом. - Возвращает:
- true, если obj является AccessControlContext и имеет тот же набор ProtectionDomains, что и этот контекст, иначе false.
- См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Возвращает значение хэш-кода для этого контекста. Хэш-код вычисляется путём побитового исключающего ИЛИ хэш-кодов всех домен защиты в контексте.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого контекста.
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.