新聞中心
SecurityManager

java.lang.Object
|---java.lang.SecurityManager
public class SecurityManager
extends Object
安全管理器是一個(gè)允許應(yīng)用程序?qū)崿F(xiàn)安全策略的類。 它允許應(yīng)用程序在執(zhí)行可能不安全或敏感的操作之前確定該操作是什么以及是否在允許執(zhí)行該操作的安全上下文中嘗試該操作。 應(yīng)用程序可以允許或禁止該操作。
SecurityManager 類包含許多名稱以單詞 check 開頭的方法。 在這些方法執(zhí)行某些潛在敏感操作之前,這些方法由 Java 庫中的各種方法調(diào)用。 這種檢查方法的調(diào)用通常如下所示:
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkXXX(argument, . . . );
}
因此,安全管理器有機(jī)會通過拋出異常來阻止操作完成。 如果操作被允許,安全管理器例程會簡單地返回,但如果操作不被允許,則拋出 SecurityException。 此約定的唯一例外是 checkTopLevelWindow,它返回一個(gè)布爾值。
當(dāng)前的安全管理器由 System.class 中的 setSecurityManager 方法設(shè)置。 當(dāng)前的安全管理器通過 getSecurityManager 方法獲取。
特殊方法 SecurityManager#checkPermission(java.security.Permission) 確定是否應(yīng)授予或拒絕由指定權(quán)限指示的訪問請求。 默認(rèn)實(shí)現(xiàn)調(diào)用
AccessController.checkPermission(perm);
如果請求的訪問被允許,checkPermission 會安靜地返回。如果被拒絕,則會引發(fā) SecurityException。
從 Java 2 SDK v1.2 開始,SecurityManager 中其他每個(gè)檢查方法的默認(rèn)實(shí)現(xiàn)是調(diào)用 SecurityManager 的 checkPermission 方法來確定調(diào)用線程是否有權(quán)執(zhí)行請求的操作。
請注意,只有一個(gè)權(quán)限參數(shù)的 checkPermission 方法總是在當(dāng)前執(zhí)行線程的上下文中執(zhí)行安全檢查。有時(shí),應(yīng)該在給定上下文中進(jìn)行的安全檢查實(shí)際上需要在不同的上下文中進(jìn)行(例如,從工作線程中)。針對這種情況提供了包含上下文參數(shù)的 SecurityManager#getSecurityContext 方法和 SecurityManager#checkPermission(java.security.Permission, java.lang.Object) 方法。 getSecurityContext 方法返回當(dāng)前調(diào)用上下文的“快照”。 (默認(rèn)實(shí)現(xiàn)返回一個(gè) AccessControlContext 對象。)示例調(diào)用如下:
Object context = null;
SecurityManager sm = System.getSecurityManager();
if (sm != null) context = sm.getSecurityContext();
checkPermission 方法除了權(quán)限外還接受上下文對象,根據(jù)該上下文而不是當(dāng)前執(zhí)行線程的上下文做出訪問決策。 因此,不同上下文中的代碼可以調(diào)用該方法,傳遞權(quán)限和先前保存的上下文對象。 使用如上例中獲得的 SecurityManager sm 的示例調(diào)用如下:
if (sm != null) sm.checkPermission(permission, context);
權(quán)限分為以下類別:文件、套接字、網(wǎng)絡(luò)、安全性、運(yùn)行時(shí)、屬性、AWT、反映和可序列化。管理這些不同權(quán)限類別的類是 java.io.FilePermission、java.net.SocketPermission、java.net.NetPermission、java.security.SecurityPermission、java.lang.RuntimePermission、java.util.PropertyPermission、java.awt.AWTPermission、 java.lang.reflect.ReflectPermission 和 java.io.SerializablePermission。
除了前兩個(gè)(FilePermission 和 SocketPermission)之外的所有都是 java.security.BasicPermission 的子類,它本身是頂級權(quán)限類 java.security.Permission 的抽象子類。 BasicPermission 定義了包含遵循分層屬性命名約定的名稱的所有權(quán)限所需的功能(例如,“exitVM”、“setFactory”、“queuePrintJob”等)。星號可能出現(xiàn)在名稱的末尾,跟在“.”之后,或者單獨(dú)出現(xiàn),表示通配符匹配。例如:“一”。 or "" 有效,"a" 或 "ab" 無效。
FilePermission 和 SocketPermission 是頂級權(quán)限類 (java.security.Permission) 的子類。與 BasicPermission 子類直接從 Permission 而不是從 BasicPermission 中使用的類相比,此類具有更復(fù)雜的名稱語法。例如,對于 java.io.FilePermission 對象,權(quán)限名稱是文件(或目錄)的路徑名。
一些權(quán)限類有一個(gè)“動作”列表,它告訴對象允許的動作。例如,對于 java.io.FilePermission 對象,操作列表(例如“讀、寫”)指定為指定文件(或指定目錄中的文件)授予哪些操作。
其他權(quán)限類用于“命名”權(quán)限 - 包含名稱但沒有操作列表的權(quán)限;您要么擁有命名權(quán)限,要么沒有。
注意:還有一個(gè) java.security.AllPermission 權(quán)限意味著所有權(quán)限。它的存在是為了簡化可能需要執(zhí)行需要全部(或大量)權(quán)限的多項(xiàng)任務(wù)的系統(tǒng)管理員的工作。
字段摘要
| 修飾符和類型 | 字段 | 描述 |
|---|---|---|
| protected boolean | inCheck | 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。 |
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| SecurityManager() | 構(gòu)造一個(gè)新的 SecurityManager。 |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| void | checkAccept(String host, int port) | 如果不允許調(diào)用線程接受來自指定主機(jī)和端口號的套接字連接,則拋出 SecurityException。 |
| void | checkAccess(Thread t) | 如果不允許調(diào)用線程修改線程參數(shù),則拋出 SecurityException。 |
| void | checkAccess(ThreadGroup g) | 如果不允許調(diào)用線程修改線程組參數(shù),則拋出 SecurityException。 |
| void | checkAwtEventQueueAccess() | 已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應(yīng)改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權(quán)限 java.security.AllPermission。 |
| void | checkConnect(String host, int port) | 如果不允許調(diào)用線程打開到指定主機(jī)和端口號的套接字連接,則拋出 SecurityException。 |
| void | checkConnect(String host, int port, Object context) | 如果不允許指定的安全上下文打開到指定主機(jī)和端口號的套接字連接,則拋出 SecurityException。 |
| void | checkCreateClassLoader() | 如果不允許調(diào)用線程創(chuàng)建新的類加載器,則拋出 SecurityException。 |
| void | checkDelete(String file) | 如果不允許調(diào)用線程刪除指定文件,則拋出 SecurityException。 |
| void | checkExec(String cmd) | 如果不允許調(diào)用線程創(chuàng)建子進(jìn)程,則拋出 SecurityException。 |
| void | checkExit(int status) | 如果不允許調(diào)用線程導(dǎo)致 Java 虛擬機(jī)以指定的狀態(tài)碼停止,則拋出 SecurityException。 |
| void | checkLink(String lib) | 如果不允許調(diào)用線程動態(tài)鏈接字符串參數(shù)文件指定的庫代碼,則拋出 SecurityException。 |
| void | checkListen(int port) | 如果不允許調(diào)用線程在指定的本地端口號上等待連接請求,則拋出 SecurityException。 |
| void | checkMemberAccess(Class> clazz, int which) | 已棄用。 此方法依賴于調(diào)用者處于 4 的堆棧深度,這很容易出錯(cuò)并且不能由運(yùn)行時(shí)強(qiáng)制執(zhí)行。 此方法的用戶應(yīng)改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權(quán)限 java.security.AllPermission。 |
| void | checkMulticast(InetAddress maddr) | 如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播,則拋出 SecurityException。 |
| void | checkMulticast(InetAddress maddr, byte ttl) | 已棄用。 改用#checkPermission(java.security.Permission) |
| void | checkPackageAccess(String pkg) | 如果不允許調(diào)用線程訪問參數(shù)指定的包,則拋出 SecurityException。 |
| void | checkPackageDefinition(String pkg) | 如果不允許調(diào)用線程在參數(shù)指定的包中定義類,則拋出 SecurityException。 |
| void | checkPermission(Permission perm) | 如果根據(jù)當(dāng)前有效的安全策略不允許由給定權(quán)限指定的請求訪問,則拋出 SecurityException。 |
| void | checkPermission(Permission perm, Object context) | 如果指定的安全上下文被拒絕訪問由給定權(quán)限指定的資源,則引發(fā) SecurityException。 |
| void | checkPrintJobAccess() | 如果不允許調(diào)用線程發(fā)起打印作業(yè)請求,則拋出 SecurityException。 |
| void | checkPropertiesAccess() | 如果不允許調(diào)用線程訪問或修改系統(tǒng)屬性,則拋出 SecurityException。 |
| void | checkPropertyAccess(String key) | 如果不允許調(diào)用線程訪問具有指定鍵名的系統(tǒng)屬性,則拋出 SecurityException。 |
| void | checkRead(FileDescriptor fd) | 如果不允許調(diào)用線程從指定的文件描述符中讀取,則拋出 SecurityException。 |
| void | checkRead(String file) | 如果不允許調(diào)用線程讀取由字符串參數(shù)指定的文件,則拋出 SecurityException。 |
| void | checkRead(String file, Object context) | 如果不允許指定的安全上下文讀取字符串參數(shù)指定的文件,則拋出 SecurityException。 |
| void | checkSecurityAccess(String target) | 確定是否應(yīng)授予或拒絕具有指定權(quán)限目標(biāo)名稱的權(quán)限。 |
| void | checkSetFactory() | 如果不允許調(diào)用線程設(shè)置 ServerSocket 或 Socket 使用的套接字工廠或 URL 使用的流處理程序工廠,則拋出 SecurityException。 |
| void | checkSystemClipboardAccess() | 已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應(yīng)改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權(quán)限 java.security.AllPermission。 |
| boolean | checkTopLevelWindow(Object window) | 已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應(yīng)改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權(quán)限 java.security.AllPermission。 |
| void | checkWrite(FileDescriptor fd) | 如果不允許調(diào)用線程寫入指定的文件描述符,則拋出 SecurityException。 |
| void | checkWrite(String file) | 如果不允許調(diào)用線程寫入由字符串參數(shù)指定的文件,則拋出 SecurityException。 |
| protected int | classDepth(String name) | 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。 |
| protected int | classLoaderDepth() | 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。 |
| protected ClassLoader | currentClassLoader() | 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。 |
| protected Class> | currentLoadedClass() | 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。 |
| protected Class[] | getClassContext() | 以類數(shù)組的形式返回當(dāng)前執(zhí)行堆棧。 |
| boolean | getInCheck() | 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。 |
| Object | getSecurityContext() | 創(chuàng)建一個(gè)封裝當(dāng)前執(zhí)行環(huán)境的對象。 |
| ThreadGroup | getThreadGroup() | 返回線程組,在該線程組中實(shí)例化在調(diào)用它時(shí)創(chuàng)建的任何新線程。 |
| protected boolean | inClass(String name) | 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。 |
| protected boolean | inClassLoader() | 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段詳細(xì)信息
inCheck
@Deprecated protected boolean inCheck
已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
如果正在進(jìn)行安全檢查,則該字段為 true; 否則為 false。
構(gòu)造函數(shù)詳細(xì)信息
SecurityManager
public SecurityManager()
構(gòu)造一個(gè)新的 SecurityManager。
如果已經(jīng)安裝了安全管理器,該方法首先調(diào)用安全管理器的 checkPermission 方法,具有 RuntimePermission("createSecurityManager") 權(quán)限,以確保調(diào)用線程具有創(chuàng)建新安全管理器的權(quán)限。 這可能會導(dǎo)致拋出 SecurityException。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果安全管理器已經(jīng)存在并且其 checkPermission 方法不允許創(chuàng)建新的安全管理器。 |
方法詳情
getInCheck
@Deprecated public boolean getInCheck()
已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
測試是否正在進(jìn)行安全檢查。
返回:
inCheck 字段的值。 如果正在進(jìn)行安全檢查,則該字段應(yīng)包含 true,否則為 false。
getClassContext
protected Class[] getClassContext()
以類數(shù)組的形式返回當(dāng)前執(zhí)行堆棧。
數(shù)組的長度是執(zhí)行堆棧上的方法數(shù)。 索引 0 處的元素是當(dāng)前執(zhí)行方法的類,索引 1 處的元素是該方法調(diào)用者的類,依此類推。
返回:
執(zhí)行堆棧。
currentClassLoader
@Deprecated protected ClassLoader currentClassLoader()
已棄用。不推薦這種類型的安全檢查。建議改用 checkPermission 調(diào)用。
從使用非系統(tǒng)類加載器定義的類中返回最近執(zhí)行的方法的類加載器。非系統(tǒng)類加載器被定義為不等于系統(tǒng)類加載器(由 ClassLoader#getSystemClassLoader 返回)或其祖先之一的類加載器。
該方法將在以下三種情況下返回 null:
- 執(zhí)行堆棧上的所有方法都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
- 執(zhí)行堆棧上的所有方法直到第一個(gè)“特權(quán)”調(diào)用者(參見 AccessController.doPrivileged(java.security.PrivilegedAction))都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
- 使用 java.security.AllPermission 調(diào)用 checkPermission 不會導(dǎo)致 SecurityException。
返回:
使用非系統(tǒng)類加載器定義的類的方法堆棧上最近出現(xiàn)的類加載器。
currentLoadedClass
@Deprecated protected Class> currentLoadedClass()
已棄用。不推薦這種類型的安全檢查。建議改用 checkPermission 調(diào)用。
從使用非系統(tǒng)類加載器定義的類中返回最近執(zhí)行的方法的類。非系統(tǒng)類加載器被定義為不等于系統(tǒng)類加載器(由 ClassLoader#getSystemClassLoader 返回)或其祖先之一的類加載器。
該方法將在以下三種情況下返回 null:
- 執(zhí)行堆棧上的所有方法都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
- 執(zhí)行堆棧上的所有方法直到第一個(gè)“特權(quán)”調(diào)用者(參見 AccessController.doPrivileged(java.security.PrivilegedAction))都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
- 使用 java.security.AllPermission 調(diào)用 checkPermission 不會導(dǎo)致 SecurityException。
返回:
使用非系統(tǒng)類加載器定義的類的方法堆棧上最近出現(xiàn)的類。
classDepth
@Deprecated protected int classDepth(String name)
已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
返回指定類的堆棧深度。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 要搜索的類的完全限定名稱。 |
返回:
具有指定名稱的類中第一次出現(xiàn)方法的堆棧幀深度; -1 如果找不到這樣的框架。
classLoaderDepth
@Deprecated protected int classLoaderDepth()
已棄用。不推薦這種類型的安全檢查。建議改用 checkPermission 調(diào)用。
返回使用非系統(tǒng)類加載器定義的類中最近執(zhí)行的方法的堆棧深度。非系統(tǒng)類加載器被定義為不等于系統(tǒng)類加載器(由 ClassLoader#getSystemClassLoader 返回)或其祖先之一的類加載器。
此方法將在以下三種情況下返回 -1:
- 執(zhí)行堆棧上的所有方法都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
- 執(zhí)行堆棧上的所有方法直到第一個(gè)“特權(quán)”調(diào)用者(參見 AccessController.doPrivileged(java.security.PrivilegedAction))都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
- 使用 java.security.AllPermission 調(diào)用 checkPermission 不會導(dǎo)致 SecurityException。
返回:
使用非系統(tǒng)類加載器定義的類中最近出現(xiàn)的方法的堆棧幀深度。
inClass
@Deprecated protected boolean inClass(String name)
已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
測試具有指定名稱的類中的方法是否在執(zhí)行堆棧上。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 類的完全限定名。 |
返回:
如果具有指定名稱的類中的方法在執(zhí)行堆棧上,則為 true; 否則為假。
inClassLoader
@Deprecated protected boolean inClassLoader()
已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
基本上,測試使用類加載器定義的類中的方法是否在執(zhí)行堆棧上。
返回:
如果對 currentClassLoader 的調(diào)用具有非空返回值,則為 true。
getSecurityContext
public Object getSecurityContext()
創(chuàng)建一個(gè)封裝當(dāng)前執(zhí)行環(huán)境的對象。 例如,三參數(shù) checkConnect 方法和二參數(shù) checkRead 方法使用此方法的結(jié)果。 這些方法是必需的,因?yàn)榭梢哉{(diào)用受信任的方法來讀取文件或代表另一個(gè)方法打開套接字。 受信任的方法需要確定是否允許其他(可能不受信任的)方法自行執(zhí)行操作。
此方法的默認(rèn)實(shí)現(xiàn)是返回一個(gè) AccessControlContext 對象。
返回:
一個(gè)依賴于實(shí)現(xiàn)的對象,它封裝了有關(guān)當(dāng)前執(zhí)行環(huán)境的足夠信息,以便稍后執(zhí)行一些安全檢查。
checkPermission
public void checkPermission(Permission perm)
如果根據(jù)當(dāng)前有效的安全策略不允許由給定權(quán)限指定的請求訪問,則引發(fā) SecurityException。
此方法使用給定的權(quán)限調(diào)用 AccessController.checkPermission。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| perm | 請求的權(quán)限。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果根據(jù)當(dāng)前的安全策略不允許訪問。 |
| NullPointerException | 如果權(quán)限參數(shù)為空。 |
checkPermission
public void checkPermission(Permission perm, Object context)
如果指定的安全上下文被拒絕訪問由給定權(quán)限指定的資源,則引發(fā) SecurityException。 上下文必須是先前調(diào)用 getSecurityContext 返回的安全上下文,并且訪問控制決策基于為該安全上下文配置的安全策略。
如果 context 是 AccessControlContext 的實(shí)例,則使用指定的權(quán)限調(diào)用 AccessControlContext.checkPermission 方法。
如果 context 不是 AccessControlContext 的實(shí)例,則拋出 SecurityException。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| perm | 指定的權(quán)限 |
| context | 依賴于系統(tǒng)的安全上下文。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果指定的安全上下文不是 AccessControlContext 的實(shí)例(例如,為null),或者被拒絕訪問由給定權(quán)限指定的資源。 |
| NullPointerException | 如果權(quán)限參數(shù)為null。 |
checkCreateClassLoader
public void checkCreateClassLoader()
如果不允許調(diào)用線程創(chuàng)建新的類加載器,則拋出 SecurityException。
此方法使用 RuntimePermission("createClassLoader") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkCreateClassLoader。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有創(chuàng)建新類加載器的權(quán)限。 |
checkAccess
public void checkAccess(Thread t)
如果不允許調(diào)用線程修改線程參數(shù),則拋出 SecurityException。
此方法由 Thread 類的 stop、suspend、resume、setPriority、setName 和 setDaemon 方法為當(dāng)前安全管理器調(diào)用。
如果線程參數(shù)是系統(tǒng)線程(屬于具有 null 父級的線程組),則此方法使用 RuntimePermission("modifyThread") 權(quán)限調(diào)用 checkPermission。如果線程參數(shù)不是系統(tǒng)線程,則此方法只是靜默返回。
需要更嚴(yán)格策略的應(yīng)用程序應(yīng)覆蓋此方法。如果此方法被覆蓋,則覆蓋它的方法應(yīng)另外檢查調(diào)用線程是否具有 RuntimePermission("modifyThread") 權(quán)限,如果是,則靜默返回。這是為了確保授予該權(quán)限的代碼(例如 JDK 本身)可以操作任何線程。
如果此方法被覆蓋,則 super.checkAccess 應(yīng)由被覆蓋方法中的第一條語句調(diào)用,或者應(yīng)在被覆蓋方法中放置等效的安全檢查。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| t | 要檢查的線程。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有修改線程的權(quán)限。 |
| NullPointerException | 如果線程參數(shù)為空。 |
checkAccess
public void checkAccess(ThreadGroup g)
如果不允許調(diào)用線程修改線程組參數(shù),則拋出 SecurityException。
當(dāng)創(chuàng)建新的子線程或子線程組時(shí),通過 ThreadGroup 類的 setDaemon、setMaxPriority、stop、suspend、resume 和 destroy 方法為當(dāng)前安全管理器調(diào)用此方法。
如果線程組參數(shù)是系統(tǒng)線程組(具有 null 父級),則此方法使用 RuntimePermission("modifyThreadGroup") 權(quán)限調(diào)用 checkPermission。如果線程組參數(shù)不是系統(tǒng)線程組,則此方法只是靜默返回。
需要更嚴(yán)格策略的應(yīng)用程序應(yīng)覆蓋此方法。如果此方法被覆蓋,則覆蓋它的方法應(yīng)另外檢查調(diào)用線程是否具有 RuntimePermission("modifyThreadGroup") 權(quán)限,如果是,則靜默返回。這是為了確保授予該權(quán)限的代碼(例如 JDK 本身)可以操作任何線程。
如果此方法被覆蓋,則 super.checkAccess 應(yīng)由被覆蓋方法中的第一條語句調(diào)用,或者應(yīng)在被覆蓋方法中放置等效的安全檢查。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| g | 要檢查的線程組。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有修改線程組的權(quán)限。 |
| NullPointerException | 如果線程組參數(shù)為空。 |
checkExit
public void checkExit(int status)
如果不允許調(diào)用線程導(dǎo)致 Java 虛擬機(jī)以指定的狀態(tài)碼停止,則拋出 SecurityException。
該方法由 Runtime 類的 exit 方法為當(dāng)前安全管理器調(diào)用。 狀態(tài)為 0 表示成功; 其他值表示各種錯(cuò)誤。
此方法使用 RuntimePermission("exitVM."+status) 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的地方調(diào)用 super.checkExit。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| status | 退出狀態(tài)。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有權(quán)限以指定狀態(tài)暫停 Java 虛擬機(jī)。 |
checkExec
public void checkExec(String cmd)
如果不允許調(diào)用線程創(chuàng)建子進(jìn)程,則拋出 SecurityException。
此方法由 Runtime 類的 exec 方法為當(dāng)前安全管理器調(diào)用。
如果 cmd 是絕對路徑,則此方法使用 FilePermission(cmd,"execute") 權(quán)限調(diào)用 checkPermission,否則使用 FilePermission("<
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkExec。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| cmd | 指定的系統(tǒng)命令。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有創(chuàng)建子進(jìn)程的權(quán)限。 |
| NullPointerException | 如果 cmd 參數(shù)為空。 |
checkLink
public void checkLink(String lib)
如果不允許調(diào)用線程動態(tài)鏈接字符串參數(shù)文件指定的庫代碼,則拋出 SecurityException。 參數(shù)要么是一個(gè)簡單的庫名,要么是一個(gè)完整的文件名。
該方法由 Runtime 類的 load 和 loadLibrary 方法為當(dāng)前安全管理器調(diào)用。
此方法使用 RuntimePermission("loadLibrary."+lib) 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkLink。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| lib | 庫的名稱。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有動態(tài)鏈接庫的權(quán)限。 |
| NullPointerException | 如果 lib 參數(shù)為空。 |
checkRead
public void checkRead(FileDescriptor fd)
如果不允許調(diào)用線程從指定的文件描述符中讀取,則拋出 SecurityException。
此方法使用 RuntimePermission("readFileDescriptor") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkRead。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| fd | 系統(tǒng)相關(guān)的文件描述符。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有訪問指定文件描述符的權(quán)限。 |
| NullPointerException | 如果文件描述符參數(shù)為空。 |
checkRead
public void checkRead(String file)
如果不允許調(diào)用線程讀取由字符串參數(shù)指定的文件,則拋出 SecurityException。
此方法使用 FilePermission(file,"read") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkRead。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| file | 系統(tǒng)相關(guān)的文件名。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有訪問指定文件的權(quán)限。 |
| NullPointerException | 如果文件參數(shù)為空。 |
checkRead
public void checkRead(String file, Object context)
如果不允許指定的安全上下文讀取字符串參數(shù)指定的文件,則拋出 SecurityException。 上下文必須是先前調(diào)用 getSecurityContext 返回的安全上下文。
如果 context 是 AccessControlContext 的一個(gè)實(shí)例,那么將使用 FilePermission(file,"read") 權(quán)限調(diào)用 AccessControlContext.checkPermission 方法。
如果 context 不是 AccessControlContext 的實(shí)例,則拋出 SecurityException。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkRead。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| file | 系統(tǒng)相關(guān)的文件名。 |
| context | 依賴于系統(tǒng)的安全上下文。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果指定的安全上下文不是 AccessControlContext 的實(shí)例(例如,為 null),或者沒有讀取指定文件的權(quán)限。 |
| NullPointerException | 如果文件參數(shù)為空。 |
checkWrite
public void checkWrite(FileDescriptor fd)
如果不允許調(diào)用線程寫入指定的文件描述符,則拋出 SecurityException。
此方法使用 RuntimePermission("writeFileDescriptor") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkWrite。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| fd | 系統(tǒng)相關(guān)的文件描述符。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有訪問指定文件描述符的權(quán)限。 |
| NullPointerException | 如果文件描述符參數(shù)為空。 |
checkWrite
public void checkWrite(String file)
如果不允許調(diào)用線程寫入由字符串參數(shù)指定的文件,則拋出 SecurityException。
此方法使用 FilePermission(file,"write") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkWrite。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| file | 系統(tǒng)相關(guān)的文件名。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有訪問指定文件的權(quán)限。 |
| NullPointerException | 如果文件參數(shù)為空。 |
checkDelete
public void checkDelete(String file)
如果不允許調(diào)用線程刪除指定文件,則拋出 SecurityException。
該方法由 File 類的 delete 方法為當(dāng)前安全管理器調(diào)用。
此方法使用 FilePermission(file,"delete") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkDelete。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| file | 系統(tǒng)相關(guān)的文件名。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有刪除文件的權(quán)限。 |
| NullPointerException | 如果文件參數(shù)為空。 |
checkConnect
public void checkConnect(String host, int port)
如果不允許調(diào)用線程打開到指定主機(jī)和端口號的套接字連接,則拋出 SecurityException。
端口號 -1 表示調(diào)用方法正在嘗試確定指定主機(jī)名的 IP 地址。
如果端口不等于 -1,則此方法使用 SocketPermission(host+":"+port,"connect") 權(quán)限調(diào)用 checkPermission。 如果端口等于 -1,那么它會調(diào)用帶有 SocketPermission(host,"resolve") 權(quán)限的 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的地方調(diào)用 super.checkConnect。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| host | 要連接的主機(jī)名端口。 |
| port | 要連接的協(xié)議端口。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程無權(quán)打開到指定主機(jī)和端口的套接字連接。 |
| NullPointerException | 如果主機(jī)參數(shù)為空。 |
checkConnect
public void checkConnect(String host, int port, Object context)
如果不允許指定的安全上下文打開到指定主機(jī)和端口號的套接字連接,則拋出 SecurityException。
端口號 -1 表示調(diào)用方法正在嘗試確定指定主機(jī)名的 IP 地址。
如果 context 不是 AccessControlContext 的實(shí)例,則拋出 SecurityException。
否則,檢查端口號。 如果不等于 -1,則使用 SocketPermission(host+":"+port,"connect") 權(quán)限調(diào)用上下文的 checkPermission 方法。 如果端口等于 -1,則使用 SocketPermission(host,"resolve") 權(quán)限調(diào)用上下文的 checkPermission 方法。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的地方調(diào)用 super.checkConnect。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| host | 要連接的主機(jī)名端口。 |
| port | 要連接的協(xié)議端口。 |
| context | 依賴于系統(tǒng)的安全上下文。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果指定的安全上下文不是 AccessControlContext 的實(shí)例(例如,為 null),或者無權(quán)打開到指定主機(jī)和端口的套接字連接。 |
| NullPointerException | 如果主機(jī)參數(shù)為空。 |
checkListen
public void checkListen(int port)
如果不允許調(diào)用線程在指定的本地端口號上等待連接請求,則拋出 SecurityException。
此方法使用 SocketPermission("localhost:"+port,"listen") 調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的地方調(diào)用 super.checkListen。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| port | 本地端口。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有權(quán)限監(jiān)聽指定端口。 |
checkAccept
public void checkAccept(String host, int port)
如果不允許調(diào)用線程接受來自指定主機(jī)和端口號的套接字連接,則拋出 SecurityException。
該方法由ServerSocket 類的accept 方法為當(dāng)前的安全管理器調(diào)用。
此方法使用 SocketPermission(host+":"+port,"accept") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkAccept。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| host | 套接字連接的主機(jī)名。 |
| port | 套接字連接的端口號。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有接受連接的權(quán)限。 |
| NullPointerException | 如果主機(jī)參數(shù)為空。 |
checkMulticast
public void checkMulticast(InetAddress maddr)
如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播,則拋出 SecurityException。
此方法使用 java.net.SocketPermission(maddr.getHostAddress(), "accept,connect") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkMulticast。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| maddr | 要使用的 Internet 組地址。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播。 |
| NullPointerException | 如果地址參數(shù)為空。 |
checkMulticast
@Deprecated public void checkMulticast(InetAddress maddr, byte ttl)
已棄用。 改用#checkPermission(java.security.Permission)
如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播,則拋出 SecurityException。
此方法使用 java.net.SocketPermission(maddr.getHostAddress(), "accept,connect") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkMulticast。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| maddr | 要使用的 Internet 組地址。 |
| ttl | 使用中的值,如果是多播發(fā)送。 注意:此特定實(shí)現(xiàn)不使用 ttl 參數(shù)。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播。 |
| NullPointerException | 如果地址參數(shù)為空。 |
checkPropertiesAccess
public void checkPropertiesAccess()
如果不允許調(diào)用線程訪問或修改系統(tǒng)屬性,則拋出 SecurityException。
此方法由 System 類的 getProperties 和 setProperties 方法使用。
此方法使用 PropertyPermission("*", "read,write") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkPropertiesAccess。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程無權(quán)訪問或修改系統(tǒng)屬性。 |
checkPropertyAccess
public void checkPropertyAccess(String key)
如果不允許調(diào)用線程訪問具有指定鍵名的系統(tǒng)屬性,則拋出 SecurityException。
此方法由 System 類的 getProperty 方法使用。
此方法使用 PropertyPermission(key, "read") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkPropertyAccess。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 系統(tǒng)屬性鍵。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有訪問指定系統(tǒng)屬性的權(quán)限。 |
| NullPointerException | 如果關(guān)鍵參數(shù)為空。 |
| IllegalArgumentException | 如果鍵為空。 |
checkTopLevelWindow
@Deprecated public boolean checkTopLevelWindow(Object window)
已棄用。對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。此方法的用戶應(yīng)改為直接調(diào)用 checkPermission(java.security.Permission)。此方法將在未來版本中更改以檢查權(quán)限 java.security.AllPermission。
如果不信任調(diào)用線程調(diào)出由 window 參數(shù)指示的頂級窗口,則返回 false。在這種情況下,調(diào)用者仍然可以決定顯示窗口,但窗口應(yīng)該包含某種視覺警告。如果該方法返回 true,則可以在沒有任何特殊限制的情況下顯示窗口。
該方法以 AWTPermission("showWindowWithoutWarningBanner") 權(quán)限調(diào)用 checkPermission,如果沒有拋出 SecurityException,則返回 true,否則返回 false。在不包含 java.awt 包的 Java SE 子集配置文件的情況下,將調(diào)用 checkPermission 來檢查權(quán)限 java.security.AllPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會返回 false 的地方調(diào)用 super.checkTopLevelWindow,并且應(yīng)該返回 super.checkTopLevelWindow 的值。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| window | 正在創(chuàng)建的新窗口。 |
返回:
如果信任調(diào)用線程來建立頂級窗口,則為 true; 否則為 false。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果窗口參數(shù)為空。 |
checkPrintJobAccess
public void checkPrintJobAccess()
如果不允許調(diào)用線程發(fā)起打印作業(yè)請求,則拋出 SecurityException。
此方法使用 RuntimePermission("queuePrintJob") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkPrintJobAccess。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程無權(quán)發(fā)起打印作業(yè)請求。 |
checkSystemClipboardAccess
@Deprecated public void checkSystemClipboardAccess()
已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應(yīng)改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權(quán)限 java.security.AllPermission。
如果不允許調(diào)用線程訪問系統(tǒng)剪貼板,則引發(fā) SecurityException。
此方法使用 AWTPermission("accessClipboard") 權(quán)限調(diào)用 checkPermission。 在不包含 java.awt 包的 Java SE 子集配置文件的情況下,將調(diào)用 checkPermission 來檢查權(quán)限 java.security.AllPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該調(diào)用 super.checkSystemClipboardAccess 在被重寫的方法通常會拋出異常的地方。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有訪問系統(tǒng)剪貼板的權(quán)限。 |
checkAwtEventQueueAccess
@Deprecated public void checkAwtEventQueueAccess()
已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應(yīng)改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權(quán)限 java.security.AllPermission。
如果不允許調(diào)用線程訪問 AWT 事件隊(duì)列,則引發(fā) SecurityException。
此方法使用 AWTPermission("accessEventQueue") 權(quán)限調(diào)用 checkPermission。 在不包含 java.awt 包的 Java SE 子集配置文件的情況下,將調(diào)用 checkPermission 來檢查權(quán)限 java.security.AllPermission。
如果您覆蓋此方法,那么您應(yīng)該調(diào)用 super.checkAwtEventQueueAccess,此時(shí)被覆蓋的方法通常會引發(fā)異常。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有訪問 AWT 事件隊(duì)列的權(quán)限。 |
checkPackageAccess
public void checkPackageAccess(String pkg)
如果不允許調(diào)用線程訪問參數(shù)指定的包,則拋出 SecurityException。
該方法由類加載器的 loadClass 方法使用。
此方法首先通過從對 java.security.Security.getProperty("package.access") 的調(diào)用中獲取逗號分隔的列表來獲取受限包的列表,并檢查 pkg 是否以或等于任何受限包開頭 . 如果是,則使用 RuntimePermission("accessClassInPackage."+pkg) 權(quán)限調(diào)用 checkPermission。
如果此方法被覆蓋,則 super.checkPackageAccess 應(yīng)作為被覆蓋方法的第一行調(diào)用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| pkg | 包名。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有訪問指定包的權(quán)限。 |
| NullPointerException | 如果包名稱參數(shù)為空。 |
checkPackageDefinition
public void checkPackageDefinition(String pkg)
如果不允許調(diào)用線程在參數(shù)指定的包中定義類,則拋出 SecurityException。
該方法被某些類加載器的 loadClass 方法使用。
此方法首先通過從對 java.security.Security.getProperty("package.definition") 的調(diào)用中獲取逗號分隔的列表來獲取受限包的列表,并檢查 pkg 是否以任何受限包開頭或等于任何受限包 . 如果是這樣,則使用 RuntimePermission("defineClassInPackage."+pkg) 權(quán)限調(diào)用 checkPermission。
如果此方法被覆蓋,則 super.checkPackageDefinition 應(yīng)作為被覆蓋方法的第一行調(diào)用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| pkg | 包名。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有權(quán)限在指定包中定義類。 |
checkSetFactory
public void checkSetFactory()
如果不允許調(diào)用線程設(shè)置 ServerSocket 或 Socket 使用的套接字工廠或 URL 使用的流處理程序工廠,則拋出 SecurityException。
此方法使用 RuntimePermission("setFactory") 權(quán)限調(diào)用 checkPermission。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkSetFactory。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程無權(quán)指定套接字工廠或流處理程序工廠。 |
checkMemberAccess
@Deprecated public void checkMemberAccess(Class> clazz, int which)
已棄用。 此方法依賴于調(diào)用者處于 4 的堆棧深度,這很容易出錯(cuò)并且不能由運(yùn)行時(shí)強(qiáng)制執(zhí)行。 此方法的用戶應(yīng)改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權(quán)限 java.security.AllPermission。
如果不允許調(diào)用線程訪問成員,則拋出 SecurityException。
默認(rèn)策略是允許訪問 PUBLIC 成員,以及訪問與調(diào)用者具有相同類加載器的類。 在所有其他情況下,此方法使用 RuntimePermission("accessDeclaredMembers") 權(quán)限調(diào)用 checkPermission。
如果此方法被覆蓋,則無法調(diào)用 super.checkMemberAccess,因?yàn)?checkMemberAccess 的默認(rèn)實(shí)現(xiàn)依賴于被檢查的代碼的堆棧深度為 4。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| clazz | 要在其上執(zhí)行反射的類。 |
| which | 訪問類型,公共或聲明。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用者沒有訪問成員的權(quán)限。 |
| NullPointerException | 如果 clazz 參數(shù)為空。 |
checkSecurityAccess
public void checkSecurityAccess(String target)
確定是否應(yīng)授予或拒絕具有指定權(quán)限目標(biāo)名稱的權(quán)限。
如果請求的權(quán)限被允許,則此方法安靜地返回。 如果被拒絕,則會引發(fā) SecurityException。
此方法為給定的權(quán)限目標(biāo)名稱創(chuàng)建一個(gè) SecurityPermission 對象,并使用它調(diào)用 checkPermission。
有關(guān)可能的權(quán)限目標(biāo)名稱的列表,請參閱 SecurityPermission 的文檔。
如果你重寫了這個(gè)方法,那么你應(yīng)該在被重寫的方法通常會拋出異常的時(shí)候調(diào)用 super.checkSecurityAccess。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| target | SecurityPermission 的目標(biāo)名稱。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果調(diào)用線程沒有請求訪問的權(quán)限。 |
| NullPointerException | 如果目標(biāo)為null |
| IllegalArgumentException | 如果目標(biāo)為empty |
getThreadGroup
public ThreadGroup getThreadGroup()
返回線程組,在該線程組中實(shí)例化在調(diào)用它時(shí)創(chuàng)建的任何新線程。 默認(rèn)情況下,它返回當(dāng)前線程的線程組。 這應(yīng)該由特定的安全管理器覆蓋以返回適當(dāng)?shù)木€程組。
返回:
將新線程實(shí)例化到的 ThreadGroup
網(wǎng)頁標(biāo)題:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSSecurityManager
路徑分享:http://www.dlmjj.cn/article/cdgsicj.html


咨詢
建站咨詢
