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:
- 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 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