- Learn
- PHP: creare un social network con Symfony framework
- Creare un form di login
Creare un form di login
La quasi totalità delle applicazioni Web necessitano di proteggere le pagine attraverso autenticazione con almeno username e password. Anche il nostro social network ha bisogno di servire informazioni diverse in base all’utente che accede. Per questa ragione iniziamo a introdurre il componente Security di Symfony e a inserire la nostra pagina di login.
Lanciamo il seguente comando per installare il componente:
$ composer require symfony/security-bundle
In una situazione normale andremmo a creare il modello dell’utente e il relativo repository per recuperare i dati dal database ma, per adesso, concentriamoci su come funziona il sistema di autenticazione inserendo username e password dell’utente direttamente nella configurazione di Symfony.
Questa impostazione cambierà nelle prossime lezioni ma visto che ancora non abbiamo introdotto alcuni concetti limitiamoci a recuperare le informazioni di login in questo modo.
Per fare ciò useremo il MemoryProvider
di Symfony che permette di recuperare le informazioni dell’utente direttamente dalle impostazioni salvate nella configurazione. Apriamo il file app/config/packages/security.yml
e aggiungiamo all’inizio del file il seguente codice:
encoders:
Symfony\Component\Security\Core\User\User: 'auto'
Il componente Security mette a disposizione una classe User
di base che per adesso è sufficiente per le nostre esigenze. La regola precedente definisce l’algoritmo che verrà utilizzato per encodare la password. Ora possiamo aprire il terminale e lanciare il comando:
$ php bin/console security:encode-password
Verrà restituita l’hash di una password, teniamola da parte e aggiungiamo all’interno del security.yml
la seguente impostazione:
providers:
backend_users:
memory:
users:
ryan: { password: '<hash>', roles: ['ROLE_USER'] }
in cui andiamo a sostituire il placeholder con l’hash ottenuto. Questa impostazione consentirà di effettuare il login con nome utente ryan e la password selezionata. Nel codice all’interno del tag login-in-memory
la password è helloworld.
A questo punto possiamo utilizzare il MakerBundle
per creare il form di login, il relativo controller e l’authenticator. Lanciamo il comando con le impostazioni come di seguito:
$ php bin/console make:auth
What style of authentication do you want? [Empty authenticator]:
[0] Empty authenticator
[1] Login form authenticator
> 1
The class name of the authenticator to create (e.g. AppCustomAuthenticator):
> LoginFormAuthenticator
Choose a name for the controller class (e.g. SecurityController) [SecurityController]:
> SecurityController
Enter the User class that you want to authenticate (e.g. App\Entity\User) []:
> Symfony\Component\Security\Core\User\User
Do you want to generate a '/logout' URL? (yes/no) [yes]:
> yes
created: src/Security/LoginFormAuthenticator.php
updated: config/packages/security.yaml
created: src/Controller/SecurityController.php
created: templates/security/login.html.twig
Success!
Next:
- Customize your new authenticator.
- Finish the redirect "TODO" in the App\Security\LoginFormAuthenticator::onAuthenticationSuccess() method.
- Review App\Security\LoginFormAuthenticator::getUser() to make sure it matches your needs.
- Review & adapt the login template: templates/security/login.html.twig.
I file creati dal comando sono sufficienti per una pagina di login funzionante. Se proviamo a loggarci nella pagina
http://kvak.local/login
con username ryan e password helloworld riceveremo l’eccezione
# TODO: provide a valid redirect inside /var/www/kvak/src/Security/LoginFormAuthenticator.php
E’ in realtà una buona notizia perché indica che tutto sta funzionando e che dobbiamo seguire i consigli del comando precedente.
Per effettuare il logout possiamo dirigerci all’indirizzo
http://kvak.local/logout
Il codice della lezione è disponibile con il tag login-in-memory
all’interno del repository.
Personalizzazione della pagina di login
La guida è in pubblicazione. Altre lezioni saranno pubblicate nei prossimi giorni.
Se vuoi aggiornamenti su PHP inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Disegnare campi di input in stile Twitter
In questo video vedremo come personalizzare i campi di input di un sito web imitando lo stile di Twitter, uno […]