Configurazione del controllo degli accessi

Panoramica delle opzioni di configurazione di Nette Security.

Se non usate tutto il framework, ma solo questa libreria, leggete come caricare la configurazione.

Nella configurazione potete definire un elenco di utenti e creare così un semplice autenticatore (Nette\Security\SimpleAuthenticator). Poiché nella configurazione le password sono indicate in chiaro, questa soluzione è adatta solo agli scopi di prova.

security:
	# mostrare il pannello dell'utente nella Tracy Bar?
	debugger: ...  # (bool) predefinito auto (attivo quando Tracy è attiva)

	users:
		# nome: password
		johndoe: 'secret123'

		# nome, password, ruoli e altri dati disponibili nell'identità
		janedoe:
			password: 'secret123'
			roles: [admin]
			data: ...

Invece della password in chiaro potete indicare il suo hash; viene riconosciuto automaticamente. Poiché sia le password sia gli hash possono contenere caratteri con un significato speciale in NEON, consigliamo di racchiuderli sempre tra virgolette.

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

Potete inoltre definire ruoli e risorse e creare così la base per un autorizzatore (Nette\Security\Permission):

security:
	roles:
		guest:
		registered: [guest]  # registered eredita da guest
		admin: [registered]  # e admin eredita da registered

	resources:
		article:
		comment: [article]   # la risorsa eredita da article
		poll:

E infine le regole di accesso. Ogni regola è una terna di ruolo, risorsa e privilegio; un elemento omesso o null significa “tutti” e una semplice stringa consente o nega tutto al ruolo.

security:
	rules:
		allow:
			- [guest, article, view]              # ruolo, risorsa, privilegio
			- [registered, comment, [add, edit]]  # un elenco significa più valori
			- [admin]                             # admin può fare tutto
		deny:
			- [banned, comment, add]

Se avete bisogno di regole più complesse, per esempio di condizioni verificate da un callback (asserzioni), registrate un vostro autorizzatore come mostrato in Autorizzazione. Quando lo fate, definite ruoli, risorse e regole in quell'autorizzatore invece che qui, altrimenti vi ritrovereste con due servizi Nette\Security\Permission in concorrenza.

Storage dell'utente

Potete configurare come vengono conservate le informazioni sull'utente connesso:

security:
	authentication:
		# periodo di inattività dopo il quale l'utente verrà disconnesso
		expiration: 30 minutes        # (string) predefinito non impostato

		# dove conservare le informazioni sull'utente connesso
		storage: session              # (session|cookie) predefinito session

		# mantenere l'identità disponibile dopo la disconnessione e la scadenza
		persistIdentity: true         # (bool) predefinito true

Se scegliete cookie come storage, potete impostare anche queste opzioni:

security:
	authentication:
		# nome del cookie
		cookieName: userId            # (string) predefinito userid

		# domini che possono ricevere il cookie
		cookieDomain: 'example.com'   # (string|domain)

		# limitazione per l'accesso cross-origin
		cookieSamesite: None          # (Strict|Lax|None) predefinito Lax

Servizi DI

Al container DI vengono aggiunti questi servizi:

Nome Tipo Descrizione
security.authenticator Nette\Security\Authenticator autenticatore
security.authorizator Nette\Security\Authorizator autorizzatore
security.passwords Nette\Security\Passwords hashing delle password
security.user Nette\Security\User utente corrente
security.userStorage Nette\Security\UserStorage storage
versione: 4.x