Permissions API

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die Permissions API bietet eine konsistente programmgesteuerte Möglichkeit, den Status von API-Berechtigungen im aktuellen Kontext zu erfragen, wie zum Beispiel in einer Webseite oder einem Worker. Beispielsweise kann sie verwendet werden, um festzustellen, ob die Berechtigung für den Zugriff auf eine bestimmte Funktion oder API gewährt, verweigert oder spezifische Benutzerberechtigungen erforderlich macht.

Konzepte und Verwendung

Historisch gesehen behandeln verschiedene APIs ihre Berechtigungen inkonsistent – zum Beispiel die Notifications API, die eigene Methoden zum Anfordern von Berechtigungen und zum Überprüfen des Berechtigungsstatus bereitstellt, während die Geolocation API dies nicht tat. Die Permissions API stellt Entwicklern die Werkzeuge zur Verfügung, um eine konsistente Benutzererfahrung beim Arbeiten mit Berechtigungen zu implementieren.

Die Berechtigungen dieser API aggregieren effektiv alle Sicherheitsbeschränkungen für den Kontext, einschließlich aller Anforderungen, dass eine API in einem sicheren Kontext verwendet wird, Permissions-Policy-Beschränkungen, die auf das Dokument angewendet werden, Anforderungen für Benutzerinteraktionen und Benutzeraufforderungen. Wenn zum Beispiel eine API durch eine Berechtigungspolitik beschränkt ist, würde die zurückgegebene Berechtigung denied sein und der Benutzer würde nicht um Zugriff gebeten werden.

Die Eigenschaft permissions ist sowohl im Standard-Browsing-Kontext als auch im Worker-Kontext auf dem Navigator-Objekt verfügbar (WorkerNavigator – sodass Berechtigungsüberprüfungen auch innerhalb von Workern verfügbar sind) und gibt ein Permissions-Objekt zurück, das Zugriff auf die Funktionen der Permissions API bietet.

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

Berechtigung anfordern

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

Der Mechanismus, der diese Aufforderung auslöst, hängt von der spezifischen API ab – er ist nicht als Teil der Permissions API definiert. Im Allgemeinen wird die Aufforderung durch Code ausgelöst, der eine Methode zum Zugriff auf oder Öffnen der Funktion aufruft oder der sich für Benachrichtigungen von der Funktion registriert, die sie anschließend aufrufen werden.

Beachten Sie, dass nicht alle Funktionen eine Aufforderung benötigen. Die Berechtigung kann durch eine Permission Policy, implizit durch transiente Aktivierung oder durch einen anderen Mechanismus gewährt werden.

Berechtigung widerrufen

Der Widerruf von Berechtigungen wird nicht durch die API verwaltet. Genauer gesagt wurde eine Methode Permissions.revoke() vorgeschlagen, aber inzwischen aus den Browsern entfernt, in denen sie implementiert war.

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

  • Firefox: Hamburger-Menü > Einstellungen > Datenschutz & Sicherheit > Berechtigungen (dann die Einstellungen-Schaltfläche für die betreffende Berechtigung auswählen).
  • Chrome: Hamburger-Menü > Einstellungen > Erweiterte Einstellungen anzeigen. Im Abschnitt Privatsphäre auf Inhaltseinstellungen klicken. Im sich öffnenden Dialogfeld den Abschnitt Standort finden und Fragen, wenn eine Website… auswählen. Schließlich auf Ausnahmen verwalten klicken und die Berechtigungen entfernen, die Sie den Webseiten erteilt haben.

Berechtigungsbewusste APIs

Nicht der Berechtigungsstatus aller APIs kann mit der Permissions API abgefragt werden. Eine nicht abschließende Liste von berechtigungsbewussten APIs umfasst:

Schnittstellen

Permissions

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

PermissionStatus

Ermöglicht den Zugriff auf den aktuellen Status einer Berechtigung und einen Ereignishandler, um auf Änderungen im Berechtigungsstatus zu reagieren.

Erweiterungen zu anderen Schnittstellen

Ermöglicht den Zugriff auf das Permissions-Objekt aus dem Hauptkontext und dem Worker-Kontext.

Beispiele

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

Das Beispiel 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

api.Navigator.permissions

api.WorkerNavigator.permissions

Siehe auch