Spec-Zone .ru
спецификации, руководства, описания, API
|
HighScore
class хранит и защищает доступ к высокому счету пользователя для ExampleGame
(и любые другие игры, которые вызывают это). Для простоты этот class сохраняет высокое значение счета в файл, вызванный .highscore
, в корневом каталоге пользователя. Однако, перед разрешением ExampleGame
получить или обновить высокое значение счета пользователя, этот class проверки, чтобы удостовериться, что пользователь предоставил ExampleGame
разрешение, чтобы получить доступ к высокому счету в его/ее файле политики безопасности.
ExampleGame
имеет HighScorePermissionПроверять действительно ли ExampleGame
имеет разрешение, чтобы получить доступ к высокому счету пользователя, HighScore
class должен:
System.getSecurityManager()
получить в настоящий момент установленного менеджера безопасности.HighScorePermission
объект, иcheckPermission
метод, и передача это недавно созданный HighScorePermission
объект.Вот код:
SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission( new HighScorePermission(gameName)); }
checkPermission
метод по существу спрашивает менеджера безопасности если ExampleGame
имеет указанное HighScorePermission
. Другими словами это спрашивает менеджера безопасности если ExampleGame
имеет разрешение, чтобы обновить высокое значение счета пользователя для указанной игры (ExampleGame
). Базовая платформа безопасности будет консультироваться с политикой безопасности пользователя, чтобы видеть если ExampleGame
действительно имеет это разрешение.
Here
полный исходный код для HighScore
class.
Отметьте: doPrivileged
вызовы метода используются, чтобы включить HighScore
ко временно ресурсам доступа, которые доступны этому, но которые не доступны коду, который вызывает это (ExampleGame
). Например, ожидается, что файл политики предоставит HighScore
разрешение к доступу .highscore
файл в корневом каталоге пользователя, но это не будет предоставлять это разрешение играм, такой как ExampleGame
.