高分班
HighScore
类存储并保护对ExampleGame
(以及任何其他调用它的游戏)用户高分的访问。为简单起见,此类将高分值保存到用户主目录中的名为.highscore
的文件中。但是,在允许ExampleGame
检索或更新用户的高分值之前,此类检查以确保用户已授予ExampleGame
权限来访问其安全策略文件中的高分。
检查 ExampleGame 是否具有 HighScorePermission
要检查ExampleGame
是否有权访问用户的高分,HighScore
类必须:
-
致电
System.getSecurityManager()
以获取当前安装的安全 管理 器。 -
如果结果不为空(即有一个安全 管理 器,而不是调用方是不受限制的应用程序),则
-
构造一个
HighScorePermission
对象,然后- 调用安全 管理 器的
checkPermission
方法,并将新构造的HighScorePermission
对象传递给该方法。
- 调用安全 管理 器的
这是代码:
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkPermission(
new HighScorePermission(gameName));
}
checkPermission
方法本质上询问安全 管理 器ExampleGame
是否具有指定的HighScorePermission
。换句话说,它询问安全 管理 器ExampleGame
是否具有针对指定游戏(ExampleGame
)更新用户的高分值的权限。基础安全框架将参考用户的安全策略,以查看ExampleGame
是否确实具有此权限。
HighScore 代码
Here是HighScore
类的完整源代码。
注意:doPrivileged
方法调用用于使HighScore
临时访问对其可用但对调用它的代码(ExampleGame
)不可用的资源。例如,预计策略文件将授予HighScore
权限以访问用户主目录中的.highscore
文件,但不会将此权限授予游戏(例如ExampleGame
)。