Symfony - Cookie e gestione delle sessioni

Il componente HttpFoundation di Symfony fornisce la gestione dei cookie e della sessione in modo orientato agli oggetti. Cookiefornisce l'archiviazione dei dati lato client e supporta solo una piccola quantità di dati. Di solito, è di 2 KB per dominio e dipende dal browser.Sessionfornisce l'archiviazione dei dati lato server e supporta una grande quantità di dati. Vediamo come creare un cookie e una sessione in un'applicazione web Symfony.

Cookie

Symfony fornisce la classe Cookie per creare un elemento cookie. Creiamo un colore per il cookie, che scade tra 24 ore con valoreblue. Il parametro del costruttore della classe cookie è il seguente.

  • nome (tipo: stringa) - nome del cookie
  • valore (tipo: stringa) - valore del cookie
  • expire (type: integer / string / datetime) - informazioni sulla scadenza
  • percorso (tipo: stringa) - il percorso del server in cui è disponibile il cookie
  • dominio (tipo: stringa) - l'indirizzo del dominio in cui è disponibile il cookie
  • secure (type: boolean) - se il cookie deve essere trasmesso in connessione HTTPS
  • httpOnly (type: boolean) - se il cookie è disponibile solo nel protocollo HTTP
use Symfony\Component\HttpFoundation\Cookie;  
$cookie = new Cookie('color', 'green', strtotime('tomorrow'), '/', 
   'somedomain.com', true, true);

Symfony fornisce anche la seguente opzione per la creazione di cookie basata su stringhe.

$cookie = Cookie::fromString('color = green; expires = Web, 4-May-2017 18:00:00 +0100; 
path=/; domain = somedomain.com; secure; httponly');

Ora, il cookie creato deve essere allegato all'intestazione dell'oggetto risposta http come segue.

$response->headers->setCookie($cookie);

Per ottenere il cookie, possiamo utilizzare l'oggetto Request come segue.

$cookie = $request->cookie->get('color');

Qui, request->cookie è di tipo PropertyBag e possiamo manipolarlo usando i metodi PropertyBag.

Sessione

Symfony fornisce una classe Session che implementa l'interfaccia SessionInterface. Le importanti API di sessione sono le seguenti,

start - Avvia la sessione.

Session $session = new Session(); 
$session->start();

invalidate - Cancella tutti i dati della sessione e rigenera l'ID della sessione.

set - Memorizza i dati nella sessione utilizzando una chiave.

$session->set('key', 'value');

Possiamo usare qualsiasi dato nel valore della sessione, essere in numero intero semplice per oggetti complessi.

get - Ottiene i dati dalla sessione utilizzando la chiave.

$val = $session->get('key');

remove - Rimuove una chiave dalla sessione.

clear - Rimuove i dati di una sessione.

FlashBag

Session fornisce un'altra utile funzionalità chiamata FlashBag. È un contenitore speciale all'interno della sessione che contiene i dati solo durante il reindirizzamento della pagina. È utile nei reindirizzamenti http. Prima di reindirizzare a una pagina, i dati possono essere salvati in FlashBag invece che in un normale contenitore di sessione ei dati salvati saranno disponibili nella richiesta successiva (la pagina reindirizzata). Quindi, i dati verranno invalidati automaticamente.

$session->getFlashBag()->add('key', 'value');  
$session->getFlashBag()->get('key');