L'autenticazione è una parte di quasi tutte le applicazioni web con cui lavori. È davvero noioso continuare a ripetere tutti i codici standard in ogni progetto. Bene, la buona notizia è che Laravel 5 ti libera da questa noia fornendo una facciata di autenticazione pronta per l'uso.
Tutto ciò che devi fare è configurare e personalizzare il fornitore di servizi di autenticazione in base alle esigenze del tuo progetto. In questo suggerimento veloce, ti mostrerò esattamente come farlo.
Se vuoi una soluzione pronta e collaudata, prova Vanguard - Advanced PHP Login and User Management su Envato Market. È un'applicazione PHP, scritta in Laravel 5.2, che consente ai proprietari di siti Web di aggiungere e abilitare rapidamente l'autenticazione, l'autorizzazione e la gestione degli utenti sul loro sito Web.
Vanguard - Advanced PHP Login e User Management su Envato MarketImmagino che tu stia iniziando con una nuova installazione di Laravel 5, ma puoi saltare questi passaggi se li hai già fatti. Innanzitutto, imposterai alcune variabili di ambiente nel file .ENV
file alla radice del tuo progetto. Fondamentalmente, questi hanno a che fare con la configurazione del database.
APP_ENV = local APP_DEBUG = true APP_KEY = 8wfDvMTvfXWHuYE483uXF11fvX8Qi8gC DB_HOST = localhost DB_DATABASE = laravel_5_authentication DB_USERNAME = root DB_PASSWORD = root CACHE_DRIVER = file SESSION_DRIVER = file
Notare il APP_ENV
, DB_HOST
, DB_DATABASE
, DB_USERNAME
, e DB_PASSWORD
variabili. Il APP_ENV
variabile dice a Laravel su quale ambiente vogliamo eseguire la nostra applicazione web. Il resto dei nomi delle variabili del database è piuttosto ovvio.
Questo è tutto ciò che devi fare per configurare la connessione al database. Ma come fa Laravel a utilizzare queste variabili? Esaminiamo il config / database.php
file. Noterai l'uso di ENV ()
funzione. Per esempio, env ('DB_HOST', 'localhost')
. Laravel 5 utilizza questa funzione per acquisire variabili dal $ _ENV
e $ _SERVER
array globali, che vengono popolati automaticamente con le variabili definite dall'utente .ENV
file.
Eseguire php artisan migrate: install --env = local
nel tuo terminale alla radice del tuo progetto per installare le migrazioni localmente. Notare anche che ci sono due migrazioni già definite nel database / migrazioni
cartella. Usando queste migrazioni, Laravel 5 crea a utenti
e a password_resets
tabella, consentendo il funzionamento del codice di autenticazione di default. Creerò una terza migrazione per modificare il file utenti
tabella solo per mostrare come personalizzare l'impostazione di autenticazione predefinita.
Eseguire php artisan make: migration alter_users_table_remove_name_add_first_name_last_name
nel terminale per creare una terza migrazione.
dropColumn ( 'name'); $ table-> string ('first_name', 50) -> after ('id'); $ table-> string ('last_name', 50) -> after ('first_name'); ); / ** * Invertire le migrazioni. * * @return void * / public function down () Schema :: table ('users', function ($ table) $ table-> dropColumn ('last_name'); $ table-> dropColumn ('first_name'); $ table-> string ('name') -> after ('id'););
Come puoi vedere, hai rimosso il campo del nome e aggiunto altri due campi per nome di battesimo
e cognome
con una lunghezza massima di 50 caratteri. Hai anche aggiunto il codice che ripristina queste modifiche nel database.
Eseguire php artisan migrate
nel terminale. Se le migrazioni sono state eseguite correttamente, dovresti essere in grado di vedere entrambe le tabelle nel tuo database con i campi che hai definito.
Stai per configurare il servizio di registrazione per aggiungere il tuo nuovo definito utenti
campi della tabella.
Modifica il file app / Servizi / Registrar.php
.
'required | min: 3 | max: 50', 'last_name' => 'required | min: 3 | max: 50', 'email' => 'richiesto | email | max: 255 | unique: users', 'password '=>' richiesto | confermato | min: 6 ',]); / ** * Crea una nuova istanza utente dopo una registrazione valida. * * @param array $ data * @return User * / public function create (array $ data) return User :: create (['first_name' => $ data ['first_name'], 'last_name' => $ data [ 'last_name'], 'email' => $ data ['email'], 'password' => bcrypt ($ data ['password']),]);
Il validatore
funzione convalida i dati trasmessi dal modulo di registrazione dell'utente. Hai rimosso il valore predefinito nome
campo e aggiunto il nome di battesimo
e cognome
campi con una lunghezza minima di tre caratteri e una lunghezza massima di 50 caratteri per entrambi. Il creare
funzione aggiunge l'utente registrato al utenti
tabella nel database, quindi è sufficiente includere il nome di battesimo
e cognome
campi ad esso.
Sarà inoltre necessario aggiornare il modello utente per includere il nome di battesimo
e cognome
i campi.
Modifica il file app / User.php
.
Il
$ fillable
array specifica quali campi del modello sono aperti alla modifica. In genere non includi i campi che vengono generati automaticamente in questo array o campi che non richiedono l'input di un utente come l'hash per un token remember me. Tutto quello che hai fatto è aggiornare il$ fillable
array per consentirenome di battesimo
ecognome
essere assegnabile in massa.Aggiornamento della vista
Infine, è sufficiente aggiornare le viste front-end per includere il
nome di battesimo
ecognome
campi. Innanzitutto, aggiornerai il modulo di registrazione.Modifica il file
Resources / views / auth / register.blade.php
.@extends ('app') @section ('contenuto')@endsectionRegistrare@if (conta ($ errori)> 0)urla! Ci sono stati alcuni problemi con il tuo contributo.@finisci se
@foreach ($ errors-> all () come $ errore)
- $ error
@endforeachHai aggiunto il
nome di battesimo
ecognome
campi al modulo di registrazione. Devi anche modificare il layout dell'app predefinito suResources / views / app.blade.php
per mostrare il nome dell'utente connesso nel menu di navigazione.Laravel 5: utilizzo della facciata di autenticazione @yield ( 'content')Proteggere i tuoi percorsi
Per proteggere i percorsi e consentire solo agli utenti loggati di accedervi, è necessario utilizzare il middleware auth fornito da Laravel. Il middleware auth è disponibile all'indirizzo
app \ Http \ Middleware \ authenticate.php
.Ecco alcuni esempi su come utilizzarlo per proteggere i tuoi percorsi.
// percorso chiuso Percorso :: get ('', [' middleware '=>' auth ', function () // se l'utente non ha effettuato il login // verrà reindirizzato alla pagina di accesso // e questo codice non verrà eseguito]); // controller action Route :: get (' ', [' middleware '=>' auth ',' uses '=>' @ ']); // all'interno di una classe controller YourController estende Controller public function __construct () $ this-> middleware (' '); $ This-> middleware (' ', [' only '=> [' ']]); $ This-> middleware (' ', [' except '=> [' ']]); Modifica dei percorsi di autenticazione predefiniti
Puoi eseguire
percorso php artigianale: elenco
nel terminale per verificare i percorsi predefiniti utilizzati dalla facciata di autenticazione. È possibile accedere a questi percorsi per testare il proprio codice di autenticazione. Ecco alcuni esempi su come modificare questi percorsi.Modifica il file
app / Http / routes.php
.// Esempio 1 // accesso url http://www.example.com/account/login // URL di disconnessione http://www.example.com/account/logout // url di registrazione http: //www.example. com / account / register Route :: controller (['account' => 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Esempio 2 // login url http://www.example.com/login // logout url http://www.example.com/logout // url di registrazione http://www.example.com/register Route :: controller (["=> 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Esempio 3 // ridefinire tutte le route Route :: get ('example / register', 'Auth \ AuthController @ getRegister '); Route :: post (' example / register ',' Auth \ AuthController @ postRegister '); Route :: get (' example / login ',' Auth \ AuthController @ getLogin '); Route :: post ('esempio / login', 'Auth \ AuthController @ postLogin'); Route :: get ('esempio / logout', 'Auth \ AuthController @ getLogout'); Route :: get ('esempio / email', 'Auth \ PasswordController @ getEmail '); Route :: post (' esempio / email ',' Auth \ PasswordController @ postEmail '); Route :: get (' example / reset / code ',' Auth \ PasswordController @ getReset ') ; Route :: post ('example / reset', 'Auth \ PasswordController @ postReset');Inoltre, ricorda di chiamare gli URI in modo dinamico nelle visualizzazioni e nei modelli di email utilizzando gli helper di Laravel. Puoi vedere come farlo nel repository GitHub di questo suggerimento rapido.
Pensieri finali
La funzione di reimpostazione della password invia il link per la reimpostazione della password all'e-mail dell'utente, quindi assicurati di aver configurato la posta nel tuo progetto Laravel. Il modello di visualizzazione per l'e-mail di reimpostazione della password è a
Resources / views / email / password.blade.php
. È inoltre possibile configurare alcune altre opzioni di base inconfig / auth.php
file.Spero che tu abbia trovato questo suggerimento facile da seguire. Fino al mio prossimo pezzo di Tuts +, felice codifica!
A proposito, se hai bisogno di aiuto extra per correggere bug o effettuare personalizzazioni che non ti piacciono, contatta uno dei fornitori di servizi PHP su Envato Studio. Possono aiutarti con una vasta gamma di problemi in modo rapido e affidabile, così con un piccolo investimento in denaro puoi risparmiare un sacco di tempo!
Provider di servizi PHP su Envato Studio