文档

Java™ 教程
隐藏目录
HighScore 类
路径:Java SE中的安全特性
课程:实现自己的权限

HighScore类

HighScore类存储和保护用户的高分,用于ExampleGame(以及其他调用它的游戏)。为简单起见,该类将高分值保存到名为.highscore的文件中,该文件位于用户的主目录中。然而,在允许ExampleGame检索或更新用户的高分值之前,该类会检查用户是否在安全策略文件中授权ExampleGame访问高分。

检查ExampleGame是否拥有HighScorePermission

要检查ExampleGame是否有权限访问用户的高分,HighScore类必须执行以下操作:

  1. 调用System.getSecurityManager()以获取当前安装的安全管理器。
  2. 如果结果不为null(即存在安全管理器,而不是调用者是一个无限制的应用程序),则
    1. 构造一个HighScorePermission对象,并
    2. 调用安全管理器的checkPermission方法,并将新构造的HighScorePermission对象传递给它。

下面是代码:

SecurityManager sm = System.getSecurityManager();
if (sm != null) {
    sm.checkPermission(
        new HighScorePermission(gameName));
}

checkPermission方法实际上询问安全管理器是否ExampleGame具有指定的HighScorePermission。换句话说,它询问安全管理器是否ExampleGame具有更新指定游戏(ExampleGame)用户的高分值的权限。底层安全框架将查阅用户的安全策略以查看ExampleGame是否确实具有此权限。

HighScore代码

这里HighScore类的完整源代码。

注意:使用doPrivileged方法调用可以使HighScore临时访问对其可用但对调用它的代码(ExampleGame)不可用的资源。例如,预期策略文件将授予HighScore访问用户主目录中的.highscore文件的权限,但不会授予这个权限给诸如ExampleGame之类的游戏。


上一页: ExampleGame
下一页: The HighScorePermission Class