Konfiguration der Zugriffskontrolle
Übersicht der Konfigurationsoptionen für Nette Security.
Wenn Sie nicht das gesamte Framework, sondern nur diese Bibliothek verwenden, lesen Sie, wie man die Konfiguration lädt.
In der Konfiguration können Sie eine Liste von Benutzern definieren und so einen einfachen
Authenticator erzeugen (Nette\Security\SimpleAuthenticator). Weil die Passwörter in der Konfiguration im
Klartext stehen, eignet sich diese Lösung nur zu Testzwecken.
security:
# das Benutzer-Panel in der Tracy Bar anzeigen?
debugger: ... # (bool) Standard ist auto (an, wenn Tracy aktiv ist)
users:
# Name: Passwort
johndoe: 'secret123'
# Name, Passwort, Rollen und weitere in der Identity verfügbare Daten
janedoe:
password: 'secret123'
roles: [admin]
data: ...
Statt eines Passworts im Klartext können Sie seinen Hash eintragen; er wird automatisch erkannt. Weil sowohl Passwörter als auch Hashes Zeichen enthalten können, die in NEON eine besondere Bedeutung haben, empfehlen wir, sie immer in Anführungszeichen zu setzen.
security:
users:
johndoe: '$2y$12$8aeofxuRALu4iNeaBHyLpuxf3xxKQdEreSaNLkQUiIfUmAv6cRHLa'
Weiterhin können Sie Rollen und Ressourcen definieren und so die Grundlage für einen Autorisator schaffen (Nette\Security\Permission):
security:
roles:
guest:
registered: [guest] # registered erbt von guest
admin: [registered] # und admin erbt von registered
resources:
article:
comment: [article] # die Ressource erbt von article
poll:
Und schließlich die Zugriffsregeln. Jede Regel ist ein Tripel aus Rolle, Ressource und Privileg; ein
weggelassener oder null-Eintrag bedeutet „alle“, und ein bloßer String erlaubt oder verbietet der
Rolle alles.
security:
rules:
allow:
- [guest, article, view] # Rolle, Ressource, Privileg
- [registered, comment, [add, edit]] # eine Liste bedeutet mehrere Werte
- [admin] # admin darf alles
deny:
- [banned, comment, add]
Wenn Sie komplexere Regeln brauchen, etwa Bedingungen, die von einem Callback geprüft werden (Assertions), registrieren Sie
einen eigenen Autorisator, wie unter Autorisierung gezeigt. Definieren Sie die Rollen, Ressourcen
und Regeln dann in diesem Autorisator und nicht hier, sonst hätten Sie am Ende zwei konkurrierende Services vom Typ
Nette\Security\Permission.
Speicher für den Benutzer
Sie können konfigurieren, wie die Informationen über den angemeldeten Benutzer gespeichert werden:
security:
authentication:
# Zeit der Inaktivität, nach der der Benutzer abgemeldet wird
expiration: 30 minutes # (string) standardmäßig nicht gesetzt
# wo die Informationen über den angemeldeten Benutzer gespeichert werden
storage: session # (session|cookie) Standard ist session
# die Identity nach dem Abmelden und nach dem Ablauf verfügbar halten
persistIdentity: true # (bool) Standardwert ist true
Wenn Sie als Speicher cookie wählen, können Sie außerdem diese Optionen setzen:
security:
authentication:
# Name des Cookies
cookieName: userId # (string) Standardwert ist userid
# Domains, die das Cookie empfangen dürfen
cookieDomain: 'example.com' # (string|domain)
# Einschränkung für den Cross-Origin-Zugriff
cookieSamesite: None # (Strict|Lax|None) Standardwert ist Lax
DI-Services
Diese Services werden dem DI-Container hinzugefügt:
| Name | Typ | Beschreibung |
|---|---|---|
security.authenticator |
Nette\Security\Authenticator | Authenticator |
security.authorizator |
Nette\Security\Authorizator | Autorisator |
security.passwords |
Nette\Security\Passwords | Passwort-Hashing |
security.user |
Nette\Security\User | aktueller Benutzer |
security.userStorage |
Nette\Security\UserStorage | Speicher |