Il file di configurazione security.yml
descrive le regole di autenticazione
e autorizzazione per una applicazione symfony.
Quando un'applicazione è creata, symfony genera un file predefinito
security.yml
nella cartella dell'applicazione config/
che descrive la sicurezza per
l'intera applicazione (sotto la chiave default
):
default: is_secure: off
Come discusso in sede di introduzione, il file security.yml
trae benefici dal
meccanismo di configurazione a cascata,
e può includere costanti.
La configurazione predefinita dell'applicazione può essere sovrascritta per un modulo,
creando un file security.yml
nella cartella config/
del modulo. Le
chiavi principali sono nomi di azioni senza il prefisso execute
(ad esempio index
per il metodo executeIndex
).
Per determinare se una azione è sicura o no, symfony cerca le informazioni nel seguente ordine:
una configurazione per l'azione specifica nel file della configurazione del modulo, se esiste;
una configurazione per l'intero modulo nel file di configurazione del modulo, se esiste (sotto la chiave
all
);la configurazione predefinita dell'applicazione (sotto la chiave
default
).
Le stesse regole di precedenza sono usate per determinare le credenziali necessarie per accedere ad una azione.
note
Il file di configurazione security.yml
è memorizzato nella cache come file PHP; il
processo è gestito automaticamente dalla classe
sfSecurityConfigHandler
.
Autenticazione
La configurazione predefinita di security.yml
, installato in modo predefinito per ogni
applicazione, autorizza l'accesso a chiunque:
default: is_secure: off
Con l'impostazione della chiave is_secure
su on
nel file dell'applicazione
security.yml
, l'intera applicazione richiederà l'autenticazione per tutti gli utenti.
note
Quando un utente non autenticato prova ad accedere ad una azione messa in sicurezza, symfony
inoltra la richiesta all'azione login
configurata in settings.yml
.
Per modificare i requisiti di autenticazione di un modulo, creare un file security.yml
nella cartella config/
del modulo e definire una chiave all
:
all: is_secure: on
Per modificare i requisiti di autenticazione di una singola azione di un modulo, creare
un file security.yml
nella cartella config/
del modulo e definire una
chiave dopo il nome dell'azione:
index: is_secure: off
tip
Non è possibile mettere in sicurezza l'azione di login. Questo per evitare una ricorsione infinita.
Autorizzazione
Quando un utente è autenticato, l'accesso ad alcune azioni può essere maggiormente limitato definendo delle credenziali. Quando le credenziali sono definite, un utente deve avere le credenziali richieste, per accedere all'azione:
all: is_secure: on credentials: admin
Il sistema di credenziali di symfony è semplice e potente. Una credenziale è una stringa che può rappresentare tutto quello di cui si ha bisogno per descrivere il modello di sicurezza dell'applicazione (come gruppi e permessi).
La chiave credentials
supporta operazioni booleane per descrivere complessi
requisiti di credenziali, utilizzando la notazione array.
Se un utente deve avere la credenziale A e la credenziale B, inserire le credenziali con parentesi quadre:
index: credentials: [A, B]
Se un utente deve avere la credenziale A o la credenziale B, inserire le credenziali con due paia di parentesi quadre:
index: credentials: [[A, B]]
È possibile anche mischiare e combinare parentesi per descrivere ogni tipo di espressione booleana con qualunque numero di credenziali.
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.