Permissions API

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

Die Permissions API bietet eine konsistente programmatische Möglichkeit, den Status von API-Berechtigungen im aktuellen Kontext abzufragen, wie einer Webseite oder einem Worker. Zum Beispiel kann sie verwendet werden, um festzustellen, ob die Berechtigung für den Zugriff auf eine bestimmte Funktion oder API erteilt, verweigert oder spezielle Benutzerberechtigung erfordert.

Konzepte und Verwendung

Historisch handhaben unterschiedliche APIs ihre eigenen Berechtigungen inkonsistent — zum Beispiel bot die Notifications API ihre eigenen Methoden zum Anfordern von Berechtigungen und Überprüfen des Berechtigungsstatus, während die Geolocation API dies nicht tat. Die Permissions API stellt Entwickler:innen die Werkzeuge zur Verfügung, um eine konsistente Benutzererfahrung bei der Arbeit mit Berechtigungen zu implementieren.

Die Berechtigungen aus dieser API aggregieren effektiv alle Sicherheitsbeschränkungen für den Kontext, einschließlich jeglicher Anforderungen für die Nutzung einer API in einem sicheren Kontext, Permissions-Policy-Beschränkungen, die auf das Dokument angewendet werden, Anforderungen für Benutzerinteraktionen und Benutzeraufforderungen. Wenn also eine API durch Berechtigungsrichtlinien eingeschränkt ist, würde die zurückgegebene Berechtigung verweigert sein und der Benutzer würde nicht um Zugriff gebeten werden.

Die permissions-Eigenschaft wurde sowohl im Standard-Browsing-Kontext als auch im Worker-Kontext auf dem Navigator-Objekt verfügbar gemacht (WorkerNavigator — so sind Berechtigungsabfragen auch in Workern verfügbar) und liefert ein Permissions-Objekt, 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 sich mit dem PermissionStatus für eine spezifische API auflöst.

Anfordern von Berechtigungen

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

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

Beachten Sie, dass nicht alle Funktionen eine Aufforderung erfordern. Berechtigungen könnten durch eine Permission Policy, implizit durch transitorische Aktivierung oder über einen anderen Mechanismus erteilt werden.

Widerrufen von Berechtigungen

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 manuell die Berechtigung für bestimmte Seiten über die Browsereinstellungen entfernen:

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

Berechtigungsbewusste APIs

Nicht alle APIs' Berechtigungsstatus können mit der Permissions API abgefragt werden. Eine nicht erschöpfende Liste von berechtigungsbewussten 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 im Berechtigungsstatus zu reagieren.

Erweiterungen auf andere Schnittstellen

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

Beispiele

Wir haben ein einfaches 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 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