securitymanager.html
来自「j2se5-api-zh,java文档的中文版本」· HTML 代码 · 共 1,114 行 · 第 1/5 页
HTML
1,114 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!--NewPage--><HTML><HEAD><!-- Generated by javadoc (build 1.5.0_03) on Wed Nov 02 09:48:36 CST 2005 --><META http-equiv="Content-Type" content="text/html; charset=gb2312"><TITLE>SecurityManager (Java 2 Platform SE 5.0)</TITLE><META NAME="keywords" CONTENT="java.lang.SecurityManager class"><LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style"><SCRIPT type="text/javascript">function windowTitle(){ parent.document.title="SecurityManager (Java 2 Platform SE 5.0)";}</SCRIPT><NOSCRIPT></NOSCRIPT></HEAD><BODY BGCOLOR="white" onload="windowTitle();"><!-- ========= START OF TOP NAVBAR ======= --><A NAME="navbar_top"><!-- --></A><A HREF="#skip-navbar_top" title="跳过导航链接"></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""><TR><TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"><A NAME="navbar_top_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>概述</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>软件包</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>类</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/SecurityManager.html"><FONT CLASS="NavBarFont1"><B>使用</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>树</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>已过时</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>索引</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>帮助</B></FONT></A> </TD> </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Standard Ed. 5.0</b></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="SecurityException.html" title="java.lang 中的类"><B>上一个类</B></A> <A HREF="Short.html" title="java.lang 中的类"><B>下一个类</B></A></FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../index.html@java_2Flang_2FSecurityManager.html" target="_top"><B>框架</B></A> <A HREF="SecurityManager.html" target="_top"><B>无框架</B></A> <SCRIPT type="text/javascript"> <!-- if(window==top) { document.writeln('<A HREF="../../allclasses-noframe.html"><B>所有类</B></A>'); } //--></SCRIPT><NOSCRIPT> <A HREF="../../allclasses-noframe.html"><B>所有类</B></A></NOSCRIPT></FONT></TD></TR><TR><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 摘要: 嵌套 | <A HREF="#field_summary">字段</A> | <A HREF="#constructor_summary">构造方法</A> | <A HREF="#method_summary">方法</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">详细信息: <A HREF="#field_detail">字段</A> | <A HREF="#constructor_detail">构造方法</A> | <A HREF="#method_detail">方法</A></FONT></TD></TR></TABLE><A NAME="skip-navbar_top"></A><!-- ========= END OF TOP NAVBAR ========= --><HR><!-- ======== START OF CLASS DATA ======== --><H2><FONT SIZE="-1">java.lang</FONT><BR>类 SecurityManager</H2><PRE><A HREF="Object.html" title="java.lang 中的类">java.lang.Object</A> <IMG SRC="../../resources/inherit.gif" ALT="继承者 "><B>java.lang.SecurityManager</B></PRE><HR><DL><DT><PRE>public class <B>SecurityManager</B><DT>extends <A HREF="Object.html" title="java.lang 中的类">Object</A></DL></PRE><P>安全管理器是一个允许应用程序实现安全策略的类。它允许应用程序在执行一个可能不安全或敏感的操作前确定该操作是什么,以及是否是在允许执行该操作的安全上下文中执行它。应用程序可以允许或不允许该操作。 <p><code>SecurityManager</code> 包含了很多名称以 <code>check</code> 开头的方法。Java 库中的各种方法在执行某些潜在的敏感操作前可以调用这些方法。对 <code>check</code> 方法的典型调用如下: <p><blockquote><pre> SecurityManager security = System.getSecurityManager(); if (security != null) { security.check<i>XXX</i>(argument, . . . ); } </pre></blockquote> <p>因此,安全管理器通过抛出异常来提供阻止操作完成的机会。如果允许执行该操作,则安全管理器例程只是简单地返回,但如果不允许执行该操作,则抛出一个 <code>SecurityException</code>。该约定的惟一例外是 <code>checkTopLevelWindow</code>,它返回 <code>boolean</code> 值。 <p>当前的安全管理器由 <code>System</code> 类中的 <code>setSecurityManager</code> 方法设置。当前的安全管理器由 <code>getSecurityManager</code> 方法获取。 <p> 特殊方法 <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission(java.security.Permission)</CODE></A> 负责确定是应该允许还是拒绝由指定权限所指示的访问请求。默认的实现调用 <pre> AccessController.checkPermission(perm); </pre> <p> 如果允许访问请求,则返回 <code>checkPermission</code>。如果拒绝访问请求,则抛出 <code>SecurityException</code>。 <p>从 Java 2 SDK v1.2 开始,<code>SecurityManager</code> 中其他所有 <code>check</code> 方法的默认实现都是调用 <code>SecurityManager checkPermission</code> 方法来确定调用线程是否具有执行所请求操作的权限。 <p> 注意,只带有单个权限参数的 <code>checkPermission</code> 方法总是在当前执行的线程上下文中执行安全检查。有时,应该在给定上下文中进行的安全检查实际上需要在<i>不同</i> 的上下文(例如,在一个辅助线程中)中进行。Java 为这种情况提供了包含有上下文参数的 <A HREF="SecurityManager.html#getSecurityContext()"><CODE>getSecurityContext</CODE></A> 方法和 <A HREF="SecurityManager.html#checkPermission(java.security.Permission, java.lang.Object)"><CODE>checkPermission</CODE></A> 方法。<code>getSecurityContext</code> 方法返回当前调用上下文的一个“快照”(默认的实现返回一个 AccessControlContext 对象)。下面是一个示例调用: <pre> Object context = null; SecurityManager sm = System.getSecurityManager(); if (sm != null) context = sm.getSecurityContext(); </pre> <p><code>checkPermission</code> 方法使用一个上下文对象,以及根据该上下文而不是当前执行线程的上下文作出访问决策的权限。因此另一个上下文中的代码可以调用此方法,传递权限和以前保存的上下文对象。下面是一个示例调用,它使用了以前示例中获得的 SecurityManager <code>sm</code>: <pre> if (sm != null) sm.checkPermission(permission, context); </pre> <p>权限分为以下类别:文件、套接字、网络、安全性、运行时、属性、AWT、反射和可序列化。管理各种权限类别的类是 <code>java.io.FilePermission</code>、<code>java.net.SocketPermission</code>、<code>java.net.NetPermission</code>、<code>java.security.SecurityPermission</code>、<code>java.lang.RuntimePermission</code>、<code>java.util.PropertyPermission</code>、<code>java.awt.AWTPermission</code>、<code>java.lang.reflect.ReflectPermission</code> 和 <code>java.io.SerializablePermission</code>。 <p>除前两个(FilePermission 和 SocketPermission)类以外的所有类都是 <code>java.security.BasicPermission</code> 的子类,而 <code>java.security.BasicPermission</code> 类又是顶级权限类 <code>java.security.Permission</code> 的抽象子类。BasicPermission 定义了所有权限所需的功能,这些功能的名称遵从分层属性命名惯例(例如“exitVM”、“setFactory”、“queuePrintJob”等等)。在名称的末尾可能出现一个星号,前面是“.”或星号,这表示通配符匹配。例如:“a.*”、“*”是有效的,而“*a”或“a*b”是无效的。<p>FilePermission 和 SocketPermission 是顶级权限类 (<code>java.security.Permission</code>) 的子类。像这些命名语法比 BasicPermission 所用的语法更为复杂的类都直接是 Permission 的子类,而不是 BasicPermission 的子类。例如,对于 <code>java.io.FilePermission</code> 对象而言,权限名就是文件(或目录)的路径名。<p>某些权限类具有一个“操作”列表,告知允许对象所执行的操作。例如,对于 <code>java.io.FilePermission</code> 对象,操作列表(如“读、写”)指定了允许对指定文件(或指定目录中的文件)执行哪些操作。 <p>其他权限类是“命名”权限??有名称但没有操作列表的类;您也许有命名的权限,也许没有。 <p>注:还有一个暗指所有权限的 <code>java.security.AllPermission</code> 权限。该权限是为了简化系统管理员的工作而存在的,因为管理员可能需要执行很多需要所有(或许多)权限的任务。 <p>有关权限相关的信息,请参阅《<a href ="../../../guide/security/permissions.html">Permissions in the JDK</a>》。例如,本文档包括一个列出各种 SecurityManager 的 <code>check</code> 方法和每个方法的默认实现所需的权限表。它还包含了版本 1.2 方法所需权限和每个方法需要哪些权限的表。 <p>有关 JDK 中对 <code>SecurityManager</code> 所作更改的更多信息和关于 1.1 风格安全管理器移植的建议,请参阅《<a href="../../../guide/security/index.html">security documentation</a>》。<P><P><DL><DT><B>从以下版本开始:</B></DT> <DD>JDK1.0</DD><DT><B>另请参见:</B><DD><A HREF="ClassLoader.html" title="java.lang 中的类"><CODE>ClassLoader</CODE></A>, <A HREF="SecurityException.html" title="java.lang 中的类"><CODE>SecurityException</CODE></A>, <A HREF="SecurityManager.html#checkTopLevelWindow(java.lang.Object)"><CODE>checkTopLevelWindow</CODE></A>, <A HREF="System.html#getSecurityManager()"><CODE>getSecurityManager</CODE></A>, <A HREF="System.html#setSecurityManager(java.lang.SecurityManager)"><CODE>setSecurityManager</CODE></A>, <CODE>AccessController</CODE>, <CODE>AccessControlContext</CODE>, <CODE>AccessControlException</CODE>, <CODE>Permission</CODE>, <CODE>BasicPermission</CODE>, <CODE>FilePermission</CODE>, <CODE>SocketPermission</CODE>, <A HREF="../util/PropertyPermission.html" title="java.util 中的类"><CODE>PropertyPermission</CODE></A>, <A HREF="RuntimePermission.html" title="java.lang 中的类"><CODE>RuntimePermission</CODE></A>, <CODE>AWTPermission</CODE>, <CODE>Policy</CODE>, <CODE>SecurityPermission</CODE>, <CODE>ProtectionDomain</CODE></DL><HR><P><!-- =========== FIELD SUMMARY =========== --><A NAME="field_summary"><!-- --></A><TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"><B>字段摘要</B></FONT></TH></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected boolean</CODE></FONT></TD><TD><CODE><B><A HREF="SecurityManager.html#inCheck">inCheck</A></B></CODE><BR> <B>已过时。</B> <I>建议不使用该类安全检查。建议使用 <code>checkPermission</code> 调用。</I></TD></TR></TABLE> <!-- ======== CONSTRUCTOR SUMMARY ======== --><A NAME="constructor_summary"><!-- --></A><TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"><B>构造方法摘要</B></FONT></TH></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD><CODE><B><A HREF="SecurityManager.html#SecurityManager()">SecurityManager</A></B>()</CODE><BR> 构造一个新的 <code>SecurityManager</code>。</TD></TR></TABLE> <!-- ========== METHOD SUMMARY =========== --><A NAME="method_summary"><!-- --></A><TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?