java checkpermission_Java SecurityManager checkPermission()方法与示例

语法: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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值