Il file di configurazione security.yml descrive le regole di autenticazione
e autorizzazione per un'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: false
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 stesso. 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 a 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: false
Con l'impostazione della chiave is_secure su true 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 a 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: true
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: false
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: true 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.