Nette Documentation Preview

syntax
Konfiguration der Zugriffskontrolle
***********************************

.[perex]
Ü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 |bootstrap:].

In der Konfiguration können Sie eine Liste von Benutzern definieren und so einen [einfachen Authenticator |authentication] erzeugen (`Nette\Security\SimpleAuthenticator`). Weil die Passwörter in der Konfiguration im Klartext stehen, eignet sich diese Lösung nur zu Testzwecken.

```neon
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 |passwords] 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. .{data-version:3.2.6}

```neon
security:
	users:
		johndoe: '$2y$12$8aeofxuRALu4iNeaBHyLpuxf3xxKQdEreSaNLkQUiIfUmAv6cRHLa'
```

Weiterhin können Sie Rollen und Ressourcen definieren und so die Grundlage für einen [Autorisator |authorization] schaffen (`Nette\Security\Permission`):

```neon
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. .{data-version:3.2.6}

```neon
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 |authorization] 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:

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

```neon
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`| [api:Nette\Security\Authenticator] | [Authenticator |authentication]
| `security.authorizator` | [api:Nette\Security\Authorizator]  | [Autorisator |authorization]
| `security.passwords`    | [api:Nette\Security\Passwords]     | [Passwort-Hashing |passwords]
| `security.user`         | [api:Nette\Security\User]          | aktueller Benutzer
| `security.userStorage`  | [api:Nette\Security\UserStorage]   | [Speicher |#Speicher für den Benutzer]

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