public class SecurityManager extends Object
的SecurityManager
类包含许多方法的名字,这个词check
开始。这些方法被称为以各种方法在java库的方法进行某些潜在的敏感操作之前。这样的check
方法调用通常看起来像这样:
SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkXXX(argument, . . . ); }
因此,安全管理器将有机会阻止通过抛出异常来完成操作。安全管理器例程返回如果操作是允许的,但把SecurityException
如果操作是不允许的。唯一的例外是在本公约checkTopLevelWindow
,它返回一个boolean
价值。
当前的安全管理是由System
setSecurityManager
类的方法。当前的安全管理是由getSecurityManager
方法得到的。
特殊的方法checkPermission(java.security.Permission)
决定访问请求通过指定权限表示应该授予或拒绝。默认实现调用
AccessController checkPermission(烫);
如果一个请求的访问是允许的,checkPermission
返回悄悄。如果拒绝,一个SecurityException
抛出。
作为java 2 SDK v1.2,每个在SecurityManager
其他check
方法的默认实现调用SecurityManager checkPermission
方法确定如果调用线程被允许执行所请求的操作。
请注意,checkPermission
方法与只是一个单一的许可的争论始终执行安全检查在当前执行线程的上下文。有时一个安全检查,应在一个给定的上下文需要从零不同的背景下进行的(例如,在一个工作线程)。的getSecurityContext
法和checkPermission
方法包括上下文参数提供了这种情况。的getSecurityContext
方法返回一个“快照”的当前上下文调用。(默认的实现返回一个accesscontrolcontext对象。)示例调用如下:
对象上下文=空;要getsecuritymanager() SM =系统;如果(小的!= null)背景getsecuritycontext() SM;
的方法,以checkPermission
上下文对象除了权限进行访问的决定,基于这样的背景下,而不是在当前执行线程。在不同的上下文中的代码可以调用该方法,通过该方法,传递该权限和先前保存的上下文对象。示例调用,使用sm
获得要在前一个例子,如下:
如果(小的!= null)SM checkPermission(许可、语境);
权限属于这些类别:文件、插座、网络、安全、运行、性能,AWT,反映,和序列化。班级管理各类许可类别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
。
除了第一个两(filepermission和socketpermission)的子类java.security.BasicPermission
,这本身就是对权限的顶层类的抽象类,它是java.security.Permission
。basicpermission定义包含如下分级属性命名约定名称的所有权限所需的功能(例如,“exitvm”、“setfactory“,”queueprintjob”,等)。星号可以出现在名称的末尾,下面一个“。”,或本身,意味着一个通配符匹配。例如:“A”或“*”是有效的,“* A”或“A * B”是无效的。
filepermission和socketpermission是权限的顶层类的子类(java.security.Permission
)。这样的课程,有一个更复杂的名字语法比从basicpermission通过basicpermission类而不是直接从许可使用。例如,一个java.io.FilePermission
对象权限的名字是一个文件的路径名(或目录)。
某些权限类有一个“动作”列表,该列表告诉对象的允许的动作。例如,一个java.io.FilePermission
对象、动作列表(如“读、写”)指定哪些行为是授予指定的文件(或在指定目录下的文件)。
其他的权限类是“命名为”权限的-包含一个名称但没有行动列表的权限;你要么有被命名的权限,要么你没有。
注:还有一个java.security.AllPermission
许可,意味着所有的权限。它存在,以简化系统管理员的工作,可能需要执行多个任务,需要所有(或多个)权限。
看到 Permissions in the JDK许可相关信息。这个文件包括,例如,表中列出的各种要check
方法和权限(S)的每个方法的默认实现的要求。它还包含一个表的所有版本1.2的方法,需要权限,并为每一个这样的方法告诉它需要的权限。
为更多的信息关于SecurityManager
变化在JDK和建议1.1-style安全管理移植,看到security documentation。
ClassLoader
,
SecurityException
,
checkTopLevelWindow
,
getSecurityManager
,
setSecurityManager
,
AccessController
,
AccessControlContext
,
AccessControlException
,
Permission
,
BasicPermission
,
FilePermission
,
SocketPermission
,
PropertyPermission
,
RuntimePermission
,
AWTPermission
,
Policy
,
SecurityPermission
,
ProtectionDomain
Modifier and Type | Field and Description |
---|---|
protected boolean |
inCheck
过时的。
不建议使用这种类型的安全检查。建议
checkPermission 可以用来代替。
|
Constructor and Description |
---|
SecurityManager()
构建了一种新的
SecurityManager 。
|
Modifier and Type | Method and Description |
---|---|
void |
checkAccept(String host, int port)
抛出一个
SecurityException 如果调用线程不允许接受套接字连接从指定的主机和端口号。
|
void |
checkAccess(Thread t)
抛出一个
SecurityException 如果调用线程不允许修改线参数。
|
void |
checkAccess(ThreadGroup g)
抛出一个
SecurityException 如果调用线程不允许修改线程组的论点。
|
void |
checkAwtEventQueueAccess()
过时的。
在
AWTPermission 依赖创建java平台的未来模块化的障碍。这种方法的用户应该checkPermission(java.security.Permission) 直接调用。这种方法将在未来的版本中查看权限java.security.AllPermission 改变。
|
void |
checkConnect(String host, int port)
抛出一个
SecurityException 如果调用线程不允许打开一个套接字连接到指定主机和端口号。
|
void |
checkConnect(String host, int port, Object context)
抛出一个
SecurityException 如果指定安全上下文中,不允许打开一个套接字连接到指定主机和端口号。
|
void |
checkCreateClassLoader()
抛出一个
SecurityException 如果调用线程不允许创建新的类装载器。
|
void |
checkDelete(String file)
抛出一个
SecurityException 如果调用线程不允许删除指定的文件。
|
void |
checkExec(String cmd)
抛出一个
SecurityException 如果调用线程不允许创建子进程。
|
void |
checkExit(int status)
抛出一个
SecurityException 如果调用线程不允许因为java虚拟机停止用指定的状态代码。
|
void |
checkLink(String lib)
抛出一个
SecurityException 如果调用线程不允许动态链接的字符串参数文件中指定的库代码。
|
void |
checkListen(int port)
抛出一个
SecurityException 如果调用线程不允许等待的指定端口的连接请求。
|
void |
checkMemberAccess(类<?> clazz, int which)
过时的。
此方法依赖于调用方在4的堆栈深度,这是容易出错的,不能由运行时执行。这种方法的用户应该
checkPermission(java.security.Permission) 直接调用。这种方法将在未来的版本中查看权限java.security.AllPermission 改变。
|
void |
checkMulticast(InetAddress maddr)
抛出一个
SecurityException 如果调用线程不允许使用(加入/离开/发送/接收)IP组播。
|
void |
checkMulticast(InetAddress maddr, byte ttl)
过时的。
使用# checkPermission(java。安全。许可)代替
|
void |
checkPackageAccess(String pkg)
抛出一个
SecurityException 如果调用线程不允许访问的参数指定的包。
|
void |
checkPackageDefinition(String pkg)
抛出一个
SecurityException 如果调用线程不允许由参数指定的包定义类。
|
void |
checkPermission(Permission perm)
抛出一个
SecurityException 如果请求的访问,由给定的允许,不允许基于安全政策目前的效果。
|
void |
checkPermission(Permission perm, Object context)
抛出一个
SecurityException 如果指定安全上下文是拒绝访问的权限指定的资源。
|
void |
checkPrintJobAccess()
抛出一个
SecurityException 如果调用线程不允许启动打印作业的要求。
|
void |
checkPropertiesAccess()
抛出一个
SecurityException 如果调用线程不允许访问或修改系统属性。
|
void |
checkPropertyAccess(String key)
抛出一个
SecurityException 如果调用线程不允许使用指定的
key 名称访问系统性能。
|
void |
checkRead(FileDescriptor fd)
抛出一个
SecurityException 如果调用线程不允许从指定的文件描述符读取。
|
void |
checkRead(String file)
抛出一个
SecurityException 如果调用线程不允许读取字符串参数中指定的文件。
|
void |
checkRead(String file, Object context)
抛出一个
SecurityException 如果指定安全上下文不允许读取的字符串参数中指定的文件。
|
void |
checkSecurityAccess(String target)
确定是否应授予或拒绝指定的权限目标名称的权限。
|
void |
checkSetFactory()
抛出一个
SecurityException 如果调用线程不允许设置
ServerSocket 或
Socket 使用套接字工厂,或流处理程序工厂使用的
URL 。
|
void |
checkSystemClipboardAccess()
过时的。
在
AWTPermission 依赖创建java平台的未来模块化的障碍。这种方法的用户应该checkPermission(java.security.Permission) 直接调用。这种方法将在未来的版本中查看权限java.security.AllPermission 改变。
|
boolean |
checkTopLevelWindow(Object window)
过时的。
在
AWTPermission 依赖创建java平台的未来模块化的障碍。这种方法的用户应该checkPermission(java.security.Permission) 直接调用。这种方法将在未来的版本中查看权限java.security.AllPermission 改变。
|
void |
checkWrite(FileDescriptor fd)
抛出一个
SecurityException 如果调用线程不允许写入指定的文件描述符。
|
void |
checkWrite(String file)
抛出一个
SecurityException 如果调用线程不允许写入的字符串参数中指定的文件。
|
protected int |
classDepth(String name)
过时的。
不建议使用这种类型的安全检查。建议
checkPermission 可以用来代替。
|
protected int |
classLoaderDepth()
过时的。
不建议使用这种类型的安全检查。建议
checkPermission 可以用来代替。
|
protected ClassLoader |
currentClassLoader()
过时的。
不建议使用这种类型的安全检查。建议
checkPermission 可以用来代替。
|
protected 类<?> |
currentLoadedClass()
过时的。
不建议使用这种类型的安全检查。建议
checkPermission 可以用来代替。
|
protected 类[] |
getClassContext()
返回当前执行堆栈作为一个类数组。
|
boolean |
getInCheck()
过时的。
不建议使用这种类型的安全检查。建议
checkPermission 可以用来代替。
|
Object |
getSecurityContext()
创建一个对象封装了当前执行环境。
|
ThreadGroup |
getThreadGroup()
返回线程组为实例化任何新的线程在被创建的时间。
|
protected boolean |
inClass(String name)
过时的。
不建议使用这种类型的安全检查。建议
checkPermission 可以用来代替。
|
protected boolean |
inClassLoader()
过时的。
不建议使用这种类型的安全检查。建议
checkPermission 可以用来代替。
|
@Deprecated protected boolean inCheck
checkPermission
可以用来代替。
true
如果有进行安全检查;
false
否则。
public SecurityManager()
如果有一个已经安装了安全管理器,该方法首先调用与RuntimePermission("createSecurityManager")
权限安全管理的checkPermission
方法保证调用线程的权限创建一个新的安全管理。这可能会导致在扔一个SecurityException
。
SecurityManager
。
SecurityException
-如果一个安全管理已经存在的
checkPermission
方法不允许一个新的安全管理创新。
System.getSecurityManager()
,
checkPermission
,
RuntimePermission
@Deprecated public boolean getInCheck()
checkPermission
可以用来代替。
inCheck
字段的值。该字段应包含
true
如果安全检查过程中,
false
否则。
inCheck
protected 类[] getClassContext()
数组的长度是执行堆栈上的方法的数量。在指数0
元素是当前执行方法的类,在指数1
元素是该方法的调用方类,等等。
@Deprecated protected ClassLoader currentClassLoader()
checkPermission
可以用来代替。
ClassLoader.getSystemClassLoader()
)或其祖先之一。
这个方法将返回null
在以下三例:
AccessController.doPrivileged(java.security.PrivilegedAction<T>)
)来自定义的类使用系统类加载器或其祖先之一。checkPermission
与java.security.AllPermission
不是SecurityException结果。getSystemClassLoader
,
checkPermission
@Deprecated protected 类<?> currentLoadedClass()
checkPermission
可以用来代替。
ClassLoader.getSystemClassLoader()
)或其祖先之一。
这个方法将返回null
在以下三例:
AccessController.doPrivileged(java.security.PrivilegedAction<T>)
)来自定义的类使用系统类加载器或其祖先之一。checkPermission
与java.security.AllPermission
不是SecurityException结果。getSystemClassLoader
,
checkPermission
@Deprecated protected int classDepth(String name)
checkPermission
可以用来代替。
name
-类的完全限定名来搜索。
-1
如果无法找到这样一个框架。
@Deprecated protected int classLoaderDepth()
checkPermission
可以用来代替。
ClassLoader.getSystemClassLoader()
)或其祖先之一。
此方法将返回- 1在以下三种情况下:
AccessController.doPrivileged(java.security.PrivilegedAction<T>)
)来自定义的类使用系统类加载器或其祖先之一。checkPermission
与java.security.AllPermission
不是SecurityException结果。getSystemClassLoader
,
checkPermission
@Deprecated protected boolean inClass(String name)
checkPermission
可以用来代替。
name
-类的完全限定名。
true
如果具有指定名称的类的一个方法是在执行堆栈;
false
否则。
@Deprecated protected boolean inClassLoader()
checkPermission
可以用来代替。
true
如果调用
currentClassLoader
有一个非空的返回值。
currentClassLoader
public Object getSecurityContext()
checkConnect
法和两参数
checkRead
方法。这些方法是必要的,因为一个可信的方法可以被调用来读取一个文件或打开一个套接字代表另一种方法。可信的方法,需要确定是否其他(可能是不可信的)方法就可以对自己进行操作。
此方法的默认实现返回一个AccessControlContext
对象。
checkConnect
,
checkRead
,
AccessControlContext
public void checkPermission(Permission perm)
SecurityException
如果请求的访问,由给定的允许,不允许基于安全政策目前的效果。
此方法调用AccessController.checkPermission
与给定的权限。
perm
的请求。
SecurityException
-如果允许基于目前的安全政策是无法访问。
NullPointerException
-如果许可的说法是
null
。
public void checkPermission(Permission perm, Object context)
SecurityException
如果指定安全上下文是拒绝访问的权限指定的资源。上下文必须是一个安全上下文由以前调用
getSecurityContext
和访问控制决策是基于配置的安全策略,安全上下文返回。
如果context
实例AccessControlContext
然后AccessControlContext.checkPermission
方法与指定的权限调用。
如果context
不是实例AccessControlContext
然后SecurityException
抛出。
perm
-指定权限
context
-系统相关的安全上下文。
SecurityException
-如果指定安全上下文不
AccessControlContext
实例(例如,是
null
),或是拒绝访问的权限指定的资源。
NullPointerException
-如果许可的说法是
null
。
getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
public void checkCreateClassLoader()
SecurityException
如果调用线程不允许创建新的类装载器。
此方法调用checkPermission
与RuntimePermission("createClassLoader")
许可。
如果你重写这个方法,那么你应该打个电话给super.checkCreateClassLoader
点重写的方法通常会抛出一个异常。
SecurityException
-如果调用线程没有权限创建一个新的类加载器。
ClassLoader.ClassLoader()
,
checkPermission
public void checkAccess(Thread t)
SecurityException
如果调用线程不允许修改线参数。
这种方法是当前安全管理的stop
,suspend
,resume
,setPriority
,setName
调用,和类Thread
setDaemon
方法。
如果线程参数是一个系统线程(属于一个null
父线程组)那么这个方法调用checkPermission
与RuntimePermission("modifyThread")
许可。如果线程参数为null,不系统线程,这个方法只返回默默。
想要更严格的策略的应用程序应该重写此方法。如果这个方法被重写,重写的方法,它还应该检查是否有RuntimePermission("modifyThread")
允许调用线程,如果是这样,还默默地。这是为了确保代码授予权限(如JDK本身)可以操纵任何线程。
如果这个方法被重写,然后super.checkAccess
应该被重写的方法中的第一条语句,或等效的安全检查应放置在重写的方法。
t
-线进行检查。
SecurityException
-如果调用线程没有权限修改线程。
NullPointerException
-如果线程的说法是
null
。
resume
,
setDaemon
,
setName
,
setPriority
,
stop
,
suspend
,
checkPermission
public void checkAccess(ThreadGroup g)
SecurityException
如果调用线程不允许修改线程组的论点。
这种方法是调用当前安全经理时,一个新的子线程的子线程组的创建,并由setDaemon
,setMaxPriority
,stop
,suspend
,resume
,和类ThreadGroup
destroy
方法。
如果该线程组的说法是系统线程组(有null
母)那么这个方法调用的RuntimePermission("modifyThreadGroup")
许可checkPermission
。如果线程组参数为null,不系统线程组,这种方法只是无声地返回。
想要更严格的策略的应用程序应该重写此方法。如果这个方法被重写,重写的方法,它还应该检查是否有RuntimePermission("modifyThreadGroup")
允许调用线程,如果是这样,还默默地。这是为了确保代码授予权限(如JDK本身)可以操纵任何线程。
如果这个方法被重写,然后super.checkAccess
应该被重写的方法中的第一条语句,或等效的安全检查应放置在重写的方法。
g
-线程组进行检查。
SecurityException
-如果调用线程没有权限修改线程组。
NullPointerException
如果线程组的说法是
null
。
destroy
,
resume
,
setDaemon
,
setMaxPriority
,
stop
,
suspend
,
checkPermission
public void checkExit(int status)
SecurityException
如果调用线程不允许因为java虚拟机停止用指定的状态代码。
该方法是通过类的方法Runtime
exit
当前安全管理器调用。状态0
表示成功;其他的值表示不同的错误。
此方法调用的RuntimePermission("exitVM."+status)
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkExit
点重写的方法通常会抛出一个异常。
status
-退出状态。
SecurityException
如果调用线程不允许用指定的状态停止java虚拟机。
exit
,
checkPermission
public void checkExec(String cmd)
SecurityException
如果调用线程不允许创建子进程。
该方法是通过类的方法Runtime
exec
当前安全管理器调用。
此方法调用checkPermission
与FilePermission(cmd,"execute")
许可,如果命令是绝对路径,否则电话checkPermission
与FilePermission("<<ALL FILES>>","execute")
。
如果你重写这个方法,那么你应该打个电话给super.checkExec
点重写的方法通常会抛出一个异常。
cmd
-指定的系统命令。
SecurityException
-如果调用线程没有权限创建子进程。
NullPointerException
-如果
cmd
论点是
null
。
Runtime.exec(java.lang.String)
,
Runtime.exec(java.lang.String, java.lang.String[])
,
Runtime.exec(java.lang.String[])
,
Runtime.exec(java.lang.String[], java.lang.String[])
,
checkPermission
public void checkLink(String lib)
SecurityException
如果调用线程不允许动态链接的字符串参数文件中指定的库代码。该参数要么是一个简单的库名称或一个完整的文件名。
这种方法是通过方法load
和类Runtime
loadLibrary
当前安全管理器调用。
此方法调用checkPermission
与RuntimePermission("loadLibrary."+lib)
许可。
如果你重写这个方法,那么你应该打个电话给super.checkLink
点重写的方法通常会抛出一个异常。
lib
-库的名称。
SecurityException
如果调用线程不允许动态链接库。
NullPointerException
-如果
lib
论点是
null
。
Runtime.load(java.lang.String)
,
Runtime.loadLibrary(java.lang.String)
,
checkPermission
public void checkRead(FileDescriptor fd)
SecurityException
如果调用线程不允许从指定的文件描述符读取。
此方法调用checkPermission
与RuntimePermission("readFileDescriptor")
许可。
如果你重写这个方法,那么你应该打个电话给super.checkRead
点重写的方法通常会抛出一个异常。
fd
-系统相关的文件描述符。
SecurityException
-如果调用线程没有权限访问指定的文件描述符。
NullPointerException
如果文件描述符的说法是
null
。
FileDescriptor
,
checkPermission
public void checkRead(String file)
SecurityException
如果调用线程不允许读取字符串参数中指定的文件。
此方法调用checkPermission
与FilePermission(file,"read")
许可。
如果你重写这个方法,那么你应该打个电话给super.checkRead
点重写的方法通常会抛出一个异常。
file
-系统相关的文件名称。
SecurityException
-如果调用线程没有权限访问指定的文件。
NullPointerException
-如果
file
论点是
null
。
checkPermission
public void checkRead(String file, Object context)
SecurityException
如果指定安全上下文不允许读取的字符串参数中指定的文件。上下文必须是一个安全上下文由以前调用
getSecurityContext
如果context
是AccessControlContext
然后AccessControlContext.checkPermission
方法实例将与FilePermission(file,"read")
权限调用。
如果context
不是实例AccessControlContext
然后SecurityException
抛出。
如果你重写这个方法,那么你应该打个电话给super.checkRead
点重写的方法通常会抛出一个异常。
file
-系统依赖的文件名。
context
-系统相关的安全上下文。
SecurityException
-如果指定安全上下文不
AccessControlContext
实例(例如,是
null
),或没有权限读取指定的文件。
NullPointerException
-如果
file
论点是
null
。
getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
public void checkWrite(FileDescriptor fd)
SecurityException
如果调用线程不允许写入指定的文件描述符。
此方法调用的RuntimePermission("writeFileDescriptor")
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkWrite
点重写的方法通常会抛出一个异常。
fd
-系统相关的文件描述符。
SecurityException
-如果调用线程没有权限访问指定的文件描述符。
NullPointerException
如果文件描述符的说法是
null
。
FileDescriptor
,
checkPermission
public void checkWrite(String file)
SecurityException
如果调用线程不允许写入的字符串参数中指定的文件。
此方法调用的FilePermission(file,"write")
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkWrite
点重写的方法通常会抛出一个异常。
file
-系统依赖的文件名。
SecurityException
-如果调用线程没有权限访问指定的文件。
NullPointerException
-如果
file
论点是
null
。
checkPermission
public void checkDelete(String file)
SecurityException
如果调用线程不允许删除指定的文件。
该方法是通过类的方法File
delete
当前安全管理器调用。
此方法调用checkPermission
与FilePermission(file,"delete")
许可。
如果你重写这个方法,那么你应该打个电话给super.checkDelete
点重写的方法通常会抛出一个异常。
file
-系统依赖的文件名。
SecurityException
-如果调用线程没有删除文件的权限。
NullPointerException
-如果
file
论点是
null
。
File.delete()
,
checkPermission
public void checkConnect(String host, int port)
SecurityException
如果调用线程不允许打开一个套接字连接到指定主机和端口号。
对-1
端口意味着调用方法试图确定指定的主机名的IP地址。
此方法调用的SocketPermission(host+":"+port,"connect")
许可checkPermission
如果端口不等于1。如果端口为1,然后调用的SocketPermission(host,"resolve")
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkConnect
点重写的方法通常会抛出一个异常。
host
-主机名端口连接。
port
的协议端口连接。
SecurityException
-如果调用线程没有权限打开一个套接字连接到指定的
host
和
port
。
NullPointerException
-如果
host
论点是
null
。
checkPermission
public void checkConnect(String host, int port, Object context)
SecurityException
如果指定安全上下文中,不允许打开一个套接字连接到指定主机和端口号。
对-1
端口意味着调用方法试图确定指定的主机名的IP地址。
如果context
不是实例AccessControlContext
然后SecurityException
抛出。
否则,检查端口号。如果它不等于1,这context
的checkPermission
方法称为一个SocketPermission(host+":"+port,"connect")
许可。如果端口是等于1,那么context
的checkPermission
方法称为一个SocketPermission(host,"resolve")
许可。
如果你重写这个方法,那么你应该打个电话给super.checkConnect
点重写的方法通常会抛出一个异常。
host
-主机名端口连接。
port
的协议端口连接。
context
-系统相关的安全上下文。
SecurityException
-如果指定安全上下文不
AccessControlContext
实例(例如,是
null
),或没有权限打开一个套接字连接到指定的
host
和
port
。
NullPointerException
-如果
host
论点是
null
。
getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
public void checkListen(int port)
SecurityException
如果调用线程不允许等待的指定端口的连接请求。
此方法调用checkPermission
与SocketPermission("localhost:"+port,"listen")
。
如果你重写这个方法,那么你应该打个电话给super.checkListen
点重写的方法通常会抛出一个异常。
port
-本地端口。
SecurityException
-如果调用线程没有权限在指定的端口上监听。
checkPermission
public void checkAccept(String host, int port)
SecurityException
如果调用线程不允许接受套接字连接从指定的主机和端口号。
该方法是通过类的方法ServerSocket
accept
当前安全管理器调用。
此方法调用的SocketPermission(host+":"+port,"accept")
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkAccept
点重写的方法通常会抛出一个异常。
host
-插座连接的主机名。
port
-插座连接的端口号。
SecurityException
如果调用线程不允许接受连接。
NullPointerException
-如果
host
论点是
null
。
ServerSocket.accept()
,
checkPermission
public void checkMulticast(InetAddress maddr)
SecurityException
如果调用线程不允许使用(加入/离开/发送/接收)IP组播。
此方法调用的java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkMulticast
点重写的方法通常会抛出一个异常。
maddr
因特网组地址被使用。
SecurityException
-如果调用线程不允许使用(加入/离开/发送/接收)IP组播。
NullPointerException
-如果地址的说法是
null
。
checkPermission
@Deprecated public void checkMulticast(InetAddress maddr, byte ttl)
SecurityException
如果调用线程不允许使用(加入/离开/发送/接收)IP组播。
此方法调用checkPermission
与java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")
许可。
如果你重写这个方法,那么你应该打个电话给super.checkMulticast
点重写的方法通常会抛出一个异常。
maddr
因特网组地址被使用。
ttl
值,如果是多播发送。注意:这个实现不使用TTL参数。
SecurityException
-如果调用线程不允许使用(加入/离开/发送/接收)IP组播。
NullPointerException
-如果地址的说法是
null
。
checkPermission
public void checkPropertiesAccess()
SecurityException
如果调用线程不允许访问或修改系统属性。
这种方法是通过类的方法和setProperties
System
getProperties
。
此方法调用的PropertyPermission("*", "read,write")
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkPropertiesAccess
点重写的方法通常会抛出一个异常。
SecurityException
-如果调用线程没有权限访问或修改系统属性。
System.getProperties()
,
System.setProperties(java.util.Properties)
,
checkPermission
public void checkPropertyAccess(String key)
SecurityException
如果调用线程不允许使用指定的
key
名称访问系统性能。
这种方法是通过类的方法System
getProperty
。
此方法调用的PropertyPermission(key, "read")
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkPropertyAccess
点重写的方法通常会抛出一个异常。
key
-系统性能的关键。
SecurityException
-如果调用线程没有权限访问指定的系统性能。
NullPointerException
-如果
key
论点是
null
。
IllegalArgumentException
-如果
key
是空的。
System.getProperty(java.lang.String)
,
checkPermission
@Deprecated public boolean checkTopLevelWindow(Object window)
AWTPermission
依赖创建java平台的未来模块化的障碍。这种方法的用户应该checkPermission(java.security.Permission)
直接调用。这种方法将在未来的版本中查看权限java.security.AllPermission
改变。
false
如果调用线程不可信,把顶层窗口的
window
参数表示。在这种情况下,调用方仍然可以决定显示该窗口,但该窗口应该包括某种视觉警告。如果方法返回
true
,然后窗口可以显示没有任何特别的限制。
看到班上Window
可信和不可信的Windows的更多信息。
此方法调用checkPermission
与AWTPermission("showWindowWithoutWarningBanner")
许可,并返回true
如果不抛出SecurityException,否则返回false
。在java SE,不包括java.awt
包亚群分布的情况下,checkPermission
而是叫做检查许可java.security.AllPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkTopLevelWindow
点重写的方法通常会返回false
,和super.checkTopLevelWindow
价值应返还。
window
-正在创建新窗口。
true
如果调用线程是信任把顶层窗口;
false
否则。
NullPointerException
-如果
window
论点是
null
。
Window
,
checkPermission
public void checkPrintJobAccess()
SecurityException
如果调用线程不允许启动打印作业的要求。
此方法调用checkPermission
与RuntimePermission("queuePrintJob")
许可。
如果你重写这个方法,那么你应该打个电话给super.checkPrintJobAccess
点重写的方法通常会抛出一个异常。
SecurityException
如果调用线程不允许启动打印作业的要求。
checkPermission
@Deprecated public void checkSystemClipboardAccess()
AWTPermission
依赖创建java平台的未来模块化的障碍。这种方法的用户应该checkPermission(java.security.Permission)
直接调用。这种方法将在未来的版本中查看权限java.security.AllPermission
改变。
SecurityException
如果调用线程不允许访问系统剪贴板。
此方法调用checkPermission
与AWTPermission("accessClipboard")
许可。在java SE,不包括java.awt
包亚群分布的情况下,checkPermission
而是叫做检查许可java.security.AllPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkSystemClipboardAccess
点重写的方法通常会抛出一个异常。
SecurityException
-如果调用线程没有权限访问系统剪贴板。
checkPermission
@Deprecated public void checkAwtEventQueueAccess()
AWTPermission
依赖创建java平台的未来模块化的障碍。这种方法的用户应该checkPermission(java.security.Permission)
直接调用。这种方法将在未来的版本中查看权限java.security.AllPermission
改变。
SecurityException
如果调用线程不允许访问的AWT事件队列。
此方法调用checkPermission
与AWTPermission("accessEventQueue")
许可。在java SE,不包括java.awt
包亚群分布的情况下,checkPermission
而是叫做检查许可java.security.AllPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkAwtEventQueueAccess
点重写的方法通常会抛出一个异常。
SecurityException
-如果调用线程没有权限访问的AWT事件队列。
checkPermission
public void checkPackageAccess(String pkg)
SecurityException
如果调用线程不允许访问的参数指定的包。
这种方法是通过类加载器的loadClass
方法。
该方法首先获取一组限制包的调用java.security.Security.getProperty("package.access")
获取一个逗号分隔的列表,并检查是否pkg
开始或等于任何受限制的包。如果是这样,那么checkPermission
被称为与RuntimePermission("accessClassInPackage."+pkg)
许可。
如果这个方法被重写,然后super.checkPackageAccess
应为第一行的重写的方法。
pkg
-包名称。
SecurityException
-如果调用线程没有权限访问指定的包。
NullPointerException
如果包名的说法是
null
。
loadClass
,
getProperty
,
checkPermission
public void checkPackageDefinition(String pkg)
SecurityException
如果调用线程不允许由参数指定的包定义类。
这种方法是通过一些类装载器loadClass
方法。
该方法首先获取一组限制包的调用java.security.Security.getProperty("package.definition")
获取一个逗号分隔的列表,并检查是否pkg
开始或等于任何受限制的包。如果是这样,那么checkPermission
被称为与RuntimePermission("defineClassInPackage."+pkg)
许可。
如果这个方法被重写,然后super.checkPackageDefinition
应为第一行的重写的方法。
pkg
-包名称。
SecurityException
-如果调用线程没有权限在指定的包中定义的类。
ClassLoader.loadClass(java.lang.String, boolean)
,
getProperty
,
checkPermission
public void checkSetFactory()
SecurityException
如果调用线程不允许设置
ServerSocket
或
Socket
使用套接字工厂,或流处理程序工厂使用的
此方法调用的RuntimePermission("setFactory")
许可checkPermission
。
如果你重写这个方法,那么你应该打个电话给super.checkSetFactory
点重写的方法通常会抛出一个异常。
URL
。
SecurityException
如果调用线程不允许指定一个套接字工厂或流处理程序工厂。
setSocketFactory
,
setSocketImplFactory
,
setURLStreamHandlerFactory
,
checkPermission
@Deprecated public void checkMemberAccess(类<?> clazz, int which)
checkPermission(java.security.Permission)
直接调用。这种方法将在未来的版本中查看权限java.security.AllPermission
改变。
SecurityException
如果调用线程不允许访问的成员。
默认策略是允许访问公共成员,以及访问与调用方相同的类装载器的类。在所有其他情况下,该方法调用checkPermission
与RuntimePermission("accessDeclaredMembers")
许可。
如果这个方法被重写,那么调用super.checkMemberAccess
不能,作为checkMemberAccess
默认的实现依赖于代码检查在4堆栈深度。
clazz
-类反射进行。
which
式访问,公开宣布。
SecurityException
如果调用者没有权限访问的成员。
NullPointerException
-如果
clazz
论点是
null
。
Member
,
checkPermission
public void checkSecurityAccess(String target)
如果允许请求的权限,该方法将静静地返回。如果拒绝,引发SecurityException。
此方法创建的对象的名称SecurityPermission
允许对象并调用它的checkPermission
。
看到一系列可能的目标名称
文件权限。SecurityPermission
如果你重写这个方法,那么你应该打个电话给super.checkSecurityAccess
点重写的方法通常会抛出一个异常。
target
的
SecurityPermission
目标名称。
SecurityException
-如果调用线程没有请求的访问权限。
NullPointerException
-如果
target
是空的。
IllegalArgumentException
-如果
target
是空的。
checkPermission
public ThreadGroup getThreadGroup()
ThreadGroup
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.