Wiki-учебник по веб-технологиям: JavaScript/ИспользованиеРасширенныхПривилегий ...

Главная | Каталог |

Использование расширенных привилегий


Как и маркированные объекты Java, маркированные скрипты используют вызовы Netscape-классов безопасности Java для запрашивания расширенных привилегий. Java-классы расширяются в Java Capabilities API.

В простейшем случае вы добавляете одну строку кода, запрашивающего разрешение на доступ к определённой цели, представляющей ресурс, доступ к которому вы хотите получить. Например:

netscape.security.PrivilegeManager.enablePrivilege("UniversalSendMail")


Когда скрипт вызывает эту функцию, подпись проверяется и, если подпись верна, даются расширенные привилегии. Если нужно, диалог выводит информацию об авторе приложения и предоставляет пользователю опцию для разрешения или запрещения расширенных привилегий.

Привилегии даются только в области видимости запрашивающей функции и только после того как запрос удовлетворён в этой функции. Эта область видимости функции включает любые функции, вызываемые запрашивающей функцией. Когда скрипт выходит из запрашивающей функции, привилегии перестают действовать.

Следующий пример демонстрирует это, печатая такой текст:

7: disabled
5: disabled
2: disabled
3: enabled
1: enabled
4: enabled
6: disabled
8: disabled


Функция g запрашивает расширенные привилегии, и только команды и функции, которые вызываются после запроса и внутри функции g, получают привилегии.

<SCRIPT ARCHIVE="ckHistory.jar" ID="a">
function printEnabled(i) {
   if (history[0] == "") {
      document.write(i + ": disabled<BR>");
   } else {
      document.write(i + ": enabled<BR>"); 
   }
}
function f() {
   printEnabled(1); 
}
function g() {
   printEnabled(2);
   netscape.security.PrivilegeManager.enablePrivilege(
      "UniversalBrowserRead");
   printEnabled(3);
   f();
   printEnabled(4); 
}
function h() {
   printEnabled(5);
   g(); 
   printEnabled(6); 
}
printEnabled(7); 
h(); 
printEnabled(8);
</SCRIPT>