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 |