语法:public void checkPermission(Permission perm);
public void checkPermission(Permission perm, Object cntxt);
SecurityManager类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)