Configuración del control de acceso
Resumen de las opciones de configuración de Nette Security.
Si no usa todo el framework, sino solo esta biblioteca, lea cómo cargar la configuración.
En la configuración puede definir una lista de usuarios y crear así un autenticador sencillo
(Nette\Security\SimpleAuthenticator). Como en la configuración las contraseñas aparecen en texto plano, esta
solución solo es adecuada para hacer pruebas.
security:
# ¿mostrar el panel de usuario en la Tracy Bar?
debugger: ... # (bool) el valor predeterminado es auto (activo cuando Tracy está activo)
users:
# nombre: contraseña
johndoe: 'secret123'
# nombre, contraseña, roles y otros datos disponibles en la identidad
janedoe:
password: 'secret123'
roles: [admin]
data: ...
En lugar de la contraseña en texto plano puede indicar su hash; se reconoce automáticamente. Como tanto las contraseñas como los hashes pueden contener caracteres con un significado especial en NEON, recomendamos escribirlos siempre entre comillas.
security:
users:
johndoe: '$2y$12$8aeofxuRALu4iNeaBHyLpuxf3xxKQdEreSaNLkQUiIfUmAv6cRHLa'
Además puede definir roles y recursos y crear así una base para un autorizador (Nette\Security\Permission):
security:
roles:
guest:
registered: [guest] # registered hereda de guest
admin: [registered] # y admin hereda de registered
resources:
article:
comment: [article] # el recurso hereda de article
poll:
Y, por último, las reglas de acceso. Cada regla es un trío de rol, recurso y privilegio; un elemento
omitido o null significa “todos”, y una cadena suelta permite o deniega todo al rol.
security:
rules:
allow:
- [guest, article, view] # rol, recurso, privilegio
- [registered, comment, [add, edit]] # una lista significa varios valores
- [admin] # admin puede hacerlo todo
deny:
- [banned, comment, add]
Si necesita reglas más complejas, como condiciones verificadas por un callback (aserciones), registre su propio autorizador
tal como se muestra en Autorización. Cuando lo haga, defina los
roles, los recursos y las reglas en ese autorizador y no aquí, porque de lo contrario acabaría con dos servicios
Nette\Security\Permission compitiendo entre sí.
Almacenamiento del usuario
Puede configurar cómo se guarda la información sobre el usuario que ha iniciado sesión:
security:
authentication:
# periodo de inactividad tras el cual se cerrará la sesión del usuario
expiration: 30 minutes # (string) de forma predeterminada no está establecido
# dónde guardar la información sobre el usuario que ha iniciado sesión
storage: session # (session|cookie) el valor predeterminado es session
# mantener la identidad disponible tras el cierre de sesión y la expiración
persistIdentity: true # (bool) el valor predeterminado es true
Si elige cookie como almacenamiento, puede establecer además estas opciones:
security:
authentication:
# nombre de la cookie
cookieName: userId # (string) el valor predeterminado es userid
# dominios que pueden recibir la cookie
cookieDomain: 'example.com' # (string|domain)
# restricción del acceso entre orígenes
cookieSamesite: None # (Strict|Lax|None) el valor predeterminado es Lax
Servicios DI
Estos servicios se añaden al contenedor DI:
| Nombre | Tipo | Descripción |
|---|---|---|
security.authenticator |
Nette\Security\Authenticator | autenticador |
security.authorizator |
Nette\Security\Authorizator | autorizador |
security.passwords |
Nette\Security\Passwords | hash de contraseñas |
security.user |
Nette\Security\User | usuario actual |
security.userStorage |
Nette\Security\UserStorage | almacenamiento |