Permissions API

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die Permissions API bietet eine konsistente programmatische Möglichkeit, den Status der API-Berechtigungen im aktuellen Kontext, wie einer Webseite oder einem Worker, abzufragen. Zum Beispiel kann sie verwendet werden, um festzustellen, ob die Berechtigung zum Zugriff auf eine bestimmte Funktion oder API gewährt, verweigert oder eine spezifische Benutzererlaubnis erforderlich ist.

Konzepte und Nutzung

Historisch gesehen handhaben verschiedene APIs ihre eigenen Berechtigungen unterschiedlich - zum Beispiel stellte die Notifications API eigene Methoden zum Anfordern von Berechtigungen und zum Überprüfen des Berechtigungsstatus bereit, während die Geolocation API dies nicht tat. Die Permissions API bietet die Werkzeuge, damit Entwickler ein konsistentes Benutzererlebnis für den Umgang mit Berechtigungen umsetzen können.

Die Berechtigungen dieser API fassen effektiv alle Sicherheitsbeschränkungen für den Kontext zusammen, einschließlich jeglicher Anforderungen, dass eine API in einem sicheren Kontext verwendet wird, Permissions-Policy-Beschränkungen, die auf das Dokument angewendet werden, Anforderungen an die Benutzerinteraktion und Benutzeranfragen. Wenn zum Beispiel eine API durch die Berechtigungsrichtlinie eingeschränkt ist, würde die zurückgegebene Berechtigung denied lauten, und der Benutzer würde nicht aufgefordert, den Zugriff zu gewähren.

Die permissions-Eigenschaft wurde sowohl im Standard-Browsing-Kontext als auch im Worker-Kontext auf dem Navigator-Objekt verfügbar gemacht (WorkerNavigator - sodass Berechtigungsabfragen innerhalb von Workern verfügbar sind) und gibt ein Permissions-Objekt zurück, das Zugriff auf die Funktionalität der Permissions API bietet.

Sobald Sie dieses Objekt haben, können Sie die Methode Permissions.query() verwenden, um ein Promise zurückzugeben, das mit dem PermissionStatus für eine spezifische API aufgelöst wird.

Anfordern von Berechtigungen

Wenn der Berechtigungsstatus prompt ist, muss der Benutzer eine Eingabeaufforderung bestätigen, um Zugriff auf die Funktion zu gewähren.

Der Mechanismus, der diese Eingabeaufforderung auslöst, hängt von der spezifischen API ab - er ist nicht Teil der Permissions API definiert. In der Regel wird die Eingabeaufforderung durch Code ausgelöst, der eine Methode aufruft, um die Funktion zuzugreifen oder zu öffnen, oder der sich für Benachrichtigungen von der Funktion registriert, die anschließend darauf zugreifen.

Beachten Sie, dass nicht alle Funktionen eine Eingabeaufforderung erfordern. Berechtigungen könnten durch eine Permission Policy, implizit durch transient activation oder durch einen anderen Mechanismus gewährt werden.

Widerrufen von Berechtigungen

Das Widerrufen von Berechtigungen wird nicht von der API verwaltet. Genauer gesagt wurde eine Methode Permissions.revoke() vorgeschlagen, aber mittlerweile aus den Browsern entfernt, in denen sie implementiert war.

Benutzer können Berechtigungen für bestimmte Seiten manuell über die Browsereinstellungen entfernen:

  • Firefox: Hamburger-Menü > Einstellungen > Datenschutz & Sicherheit > Berechtigungen (dann den Einstellungen-Button für die gewünschte Berechtigung auswählen).
  • Chrome: Hamburger-Menü > Einstellungen > Erweiterte Einstellungen anzeigen. In der Datenschutz-Sektion, klicken Sie auf Inhaltseinstellungen. Im resultierenden Dialogfeld finden Sie den Standort-Abschnitt und wählen Fragen, wenn eine Seite versucht…. Schließlich klicken Sie auf Ausnahmen verwalten und entfernen die Berechtigungen, die Sie den Seiten erteilt haben, die Sie interessieren.

Berechtigungsbewusste APIs

Nicht alle APIs' Berechtigungsstatuse können über die Permissions API abgefragt werden. Eine nicht vollständige Liste berechtigungsbewusster APIs umfasst:

Schnittstellen

Permissions

Bietet die Kernfunktionalität der Permission API, wie Methoden zum Abfragen und Widerrufen von Berechtigungen.

PermissionStatus

Bietet Zugriff auf den aktuellen Status einer Berechtigung und einen Ereignishandler, um auf Änderungen des Berechtigungsstatus zu reagieren.

Erweiterungen zu anderen Schnittstellen

Bietet Zugriff auf das Permissions-Objekt aus dem Hauptkontext bzw. dem Worker-Kontext.

Beispiele

Wir haben ein Beispiel namens Location Finder erstellt. Sie können das Beispiel live ausführen, den Quellcode auf GitHub ansehen oder mehr darüber lesen, wie es funktioniert, in unserem Artikel Using the Permissions API.

Das Beispiel für Permissions.query() zeigt auch Code, der die meisten Berechtigungen im aktuellen Browser testet und das Ergebnis protokolliert.

Spezifikationen

Specification
Permissions

Browser-Kompatibilität

api.Permissions

BCD tables only load in the browser

api.Navigator.permissions

BCD tables only load in the browser

api.WorkerNavigator.permissions

BCD tables only load in the browser

Siehe auch