我正在尝试实现自定义java.security.Permission类型,应在运行时检查该类型(因此,没有策略文件,但在代码中).此检查由java.security.Policy完成.我知道我应该为此实现自己的java.security.PolicySpi.
我找不到有关如何初始化和使用PolicySpi的任何解释,还是有更好的方法来做到这一点?
解决方法:
检查权限
在您的问题中,您说过要使用java.security.Policy检查权限,但不使用spi.policy文件.
从PolicySpi API,您可以看到PolicySpi对象具有4种方法:
但是,您可能不需要PolicySpi,因为有更简单的解决方案来检查权限.
看到:
由于您尚未指定要授予的权限类型,因此我假设这是有关java.security.CodeSource对象的权限.
要检查文件的所有当前权限:
public static void main(String[] args) {
CodeSource source;
try {
source = new CodeSource(new URL("file:/c:/*"), (java.security.cert.Certificate[]) null);
Policy policy = Policy.getPolicy();
System.out.println(policy.getPermissions(source));
} catch (IOException e) {
e.printStackTrace();
}
}
SecurityManager checkPermission()的一个很好的示例是this tutorial.
FilePermission perm = new FilePermission("path/file", "read");
AccessController.checkPermission(perm);
授予权限
有关如何授予文件权限的其他示例,建议您阅读以下内容:
那应该带给您很长的路要走!祝好运!
标签:policy,security,permissions,java
来源: https://codeday.me/bug/20191122/2056726.html