语法:
public void checkPermission(Permission perm); public void checkPermission(Permission perm, Object cntxt);
checkPermission()
方法checkPermission()方法在java.lang包中可用。
checkPermission(Permission perm)方法为请求的访问调用AccesController的checkPermission,由指定的权限指示。
当给定的安全上下文是授予资源的访问权限时,checkPermission(Permission perm,Object cntxt)方法调用AccesControlContext的checkPermission,当cntxt是AccessControlContext的实例时,由指定的权限表示。
checkPermission(Permission perm)和checkPermission(Permission perm,Object cntxt)方法在授予权限时可能会引发异常。
checkPermission(Permission perm):
SecurityException-如果拒绝当前保留的安全策略进行访问,则可能引发此异常。
NullPointerException-如果给定参数为null,则可能引发此异常。
checkPermission(Permission perm, Object cntxt):
SecurityException-当给定的权限不允许调用线程访问资源或安全性cntxt(context)不是AccessControlContext的对象时,可能引发此异常。
NullPointerException-如果给定的第一个参数为null,则可能引发此异常。
这些是非静态方法,只能通过类对象访问,如果尝试使用类名称访问这些方法,则会收到错误消息。
参数:
在第一种情况下,权限权限-此参数表示请求的权限。
在第二种情况下,权限权限,对象cntxt
许可权限–与第一种情况下定义的相似。
对象cntxt –此参数表示系统特定的安全上下文。
返回值:
此方法的返回类型为void,不返回任何内容。
示例
// Java program to demonstrate the example // of checkPermission() method of SecurityManager class import java.security.*; import java.io.*; public class CheckPermission extends SecurityManager { public static void main(String[] args) { Permission perm = new FilePermission("getProperties().doc", "read,write"); AccessControlContext acc = AccessController.getContext(); //通过使用setProperty()方法来设置策略属性 //安全管理器 System.setProperty("java.security.policy", "file:/C:/java.policy"); //实例化CheckPermission对象 CheckPermission cp = new CheckPermission(); //通过使用setSecurityManager()方法来设置 //安全管理器 System.setSecurityManager(cp); //通过使用checkPermission(Permission)方法可以 //检查该受限权限 cp.checkPermission(perm); //通过使用checkPermission(Permission,Object)方法是 //检查该受限权限cntxt时一个实例 //AccessControlContext- cp.checkPermission(perm, acc); //显示消息 System.out.println("Accepted.."); } }
输出结果
Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "getProperties().doc" "read,write") at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) at java.base/java.security.AccessController.checkPermission(AccessController.java:897) at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322) at CheckPermission.main(CheckPermission.java:25)