我发现我必须编写一个策略文件来授予我的applet权限......
但我真的很困惑...... :(
我想编写一个地图查看器的applet,我需要在运行我的applet的客户端上保存图像切片,以便本地访问切片以获得速度和时间,安全地查看对用户有益的地图...
因此,applet需要grant权限来读取/写入并在客户端tempdir上创建目录。
现在,我想编写一个策略文件以获得我的applet的权限,我不想让用户参与其中,而不是,我想自己编写策略文件来授予applet权限...
现在政策文件位置在哪里?在applet jar文件中? applet如何使用策略文件?
请帮帮我
答案 0 :(得分:4)
简单的答案是否定的,您无法远程更改策略。如果您可以覆盖用户计算机上的策略,那么安全性在哪里?
在企业环境中,这可以通过桌面管理/配置系统实现。如果要进行测试,可以手动更新策略文件。它位于Windows上,
${user.home}\java.policy
${java.home}\lib\security\java.policy
第一个更改单个用户的策略,第二个更改影响整个系统。
答案 1 :(得分:4)
使用策略文件不是一个好主意,因为它对于用户来说太复杂了。 相反,你应该获得一个证书(费用$ 200 - $ 400 /年)并签署你的applet。将允许您访问文件。
您可以尝试免费生成的测试证书。 This可能有帮助。
答案 2 :(得分:2)
您需要对applet进行签名,然后将文件操作包装在这样的特权代码块中。
final String location = locationVal;
File f = (File) AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
System.out.println("Getting File : " + location);
File outputFile1 = new File(location);
return outputFile1;
}
});
作为参考,JRE策略文件的默认位置如下
在Windows机器上。
C:\ Program Files \ Java \ JRE Version \ lib \ security \ java.policy
Java 6更新13策略存储在此处
C:\ Program Files \ Java \ jre1.6.0_13 \ lib \ security \ java.policy
如上所述,您无法在无权访问本机的情况下编辑此文件。