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
versión: 4.x