Configuration du contrôle d'accès

Aperçu des options de configuration de Nette Security.

Si vous n'utilisez pas tout le framework, mais seulement cette bibliothèque, lisez comment charger la configuration.

Vous pouvez définir dans la configuration une liste d'utilisateurs afin de créer un authenticator simple (Nette\Security\SimpleAuthenticator). Comme les mots de passe y figurent en clair, cette solution ne convient qu'à des fins de test.

security:
	# afficher le panneau utilisateur dans la Tracy Bar ?
	debugger: ...  # (bool) auto par défaut (activé si Tracy est actif)

	users:
		# nom: mot de passe
		johndoe: 'secret123'

		# nom, mot de passe, rôles et autres données disponibles dans l'identité
		janedoe:
			password: 'secret123'
			roles: [admin]
			data: ...

Au lieu d'un mot de passe en clair, vous pouvez indiquer son hachage ; il est reconnu automatiquement. Comme les mots de passe et les hachages peuvent contenir des caractères ayant une signification particulière en NEON, nous recommandons de toujours les entourer de guillemets.

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

Vous pouvez en outre définir des rôles et des ressources afin de poser les bases d'un autorisateur (Nette\Security\Permission) :

security:
	roles:
		guest:
		registered: [guest]  # registered hérite de guest
		admin: [registered]  # et admin hérite de registered

	resources:
		article:
		comment: [article]   # la ressource hérite d'article
		poll:

Et enfin les règles d'accès. Chaque règle est un triplet rôle, ressource et privilège ; un élément omis ou null signifie “tous”, et une simple chaîne autorise ou refuse tout au rôle.

security:
	rules:
		allow:
			- [guest, article, view]              # rôle, ressource, privilège
			- [registered, comment, [add, edit]]  # une liste signifie plusieurs valeurs
			- [admin]                             # admin peut tout faire
		deny:
			- [banned, comment, add]

Si vous avez besoin de règles plus complexes, par exemple de conditions vérifiées par un callback (assertions), enregistrez votre propre autorisateur comme le montre Autorisation. Dans ce cas, définissez les rôles, les ressources et les règles dans cet autorisateur plutôt qu'ici, sinon vous vous retrouveriez avec deux services Nette\Security\Permission concurrents.

Stockage de l'utilisateur

Vous pouvez configurer la façon dont sont stockées les informations sur l'utilisateur connecté :

security:
	authentication:
		# durée d'inactivité au bout de laquelle l'utilisateur sera déconnecté
		expiration: 30 minutes        # (string) non défini par défaut

		# où stocker les informations sur l'utilisateur connecté
		storage: session              # (session|cookie) session par défaut

		# conserver l'identité disponible après la déconnexion et l'expiration
		persistIdentity: true         # (bool) true par défaut

Si vous choisissez cookie comme stockage, vous pouvez aussi régler ces options :

security:
	authentication:
		# nom du cookie
		cookieName: userId            # (string) userid par défaut

		# domaines qui peuvent recevoir le cookie
		cookieDomain: 'example.com'   # (string|domain)

		# restriction pour l'accès cross-origin
		cookieSamesite: None          # (Strict|Lax|None) Lax par défaut

Services DI

Ces services sont ajoutés au conteneur DI :

Nom Type Description
security.authenticator Nette\Security\Authenticator authenticator
security.authorizator Nette\Security\Authorizator autorisateur
security.passwords Nette\Security\Passwords hachage des mots de passe
security.user Nette\Security\User utilisateur courant
security.userStorage Nette\Security\UserStorage stockage
version: 4.x