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 |