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:
- Background Synchronization API:
background-sync
(sollte immer gewährt werden) - Clipboard_API:
clipboard-read
,clipboard-write
- Compute Pressure API:
compute-pressure
- Geolocation API:
geolocation
- Local Font Access API:
local-fonts
- Media Capture and Streams API:
microphone
,camera
- Notifications API:
notifications
- Payment Handler API:
payment-handler
- Push API:
push
- Screen Wake Lock API:
screen-wake-lock
- Sensor APIs:
accelerometer
,gyroscope
,magnetometer
,ambient-light-sensor
- Storage Access API:
storage-access
,top-level-storage-access
- Storage API:
persistent-storage
- Web Bluetooth API:
bluetooth
- Web MIDI API:
midi
- Window Management API:
window-management
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