gpt4 book ai didi

java - 如何使用自定义 PolicySpi

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:06 25 4
gpt4 key购买 nike

我正在尝试实现自定义 java.security.Permission 类型,该类型应在运行时检查(因此没有策略文件,但在代码中)。此检查由 java.security.Policy 完成。我知道我应该为此实现自己的 java.security.PolicySpi

我找不到任何关于如何初始化和使用 PolicySpi 的解释,或者有更好的方法吗?

最佳答案

检查权限

在您的问题中,您声明您希望使用 java.security.Policy 检查权限,但不使用 spi.policy 文件。

来自PolicySpi API ,你可以看到一个PolicySpi对象有4个方法:

  1. engineGetPermissions(CodeSource codesource)
  2. engineGetPermissions(ProtectionDomain domain)
  3. engineImplies(ProtectionDomain domain, Permission permission)
  4. engineRefresh()

但是,您可能不需要 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 s,你可以使用:

FilePermission perm = new FilePermission("path/file", "read");
AccessController.checkPermission(perm);

授予权限

可以在运行时授予权限 java.lang.RuntimePermission .

有关如何授予文件权限的其他示例,我建议您阅读以下内容:


这应该会给你带来很长的路要走!祝你好运!

关于java - 如何使用自定义 PolicySpi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com