Usando la facciata di autenticazione di Laravel 5

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.

Alla ricerca di una scorciatoia?

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 Market

Impostazione dell'ambiente

Immagino 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.

Impostazione delle migrazioni

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.

Configurazione del servizio di registrazione

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.

Aggiornamento del modello utente

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 consentire nome di battesimo e cognome essere assegnabile in massa.

Aggiornamento della vista

Infine, è sufficiente aggiornare le viste front-end per includere il nome di battesimo e cognome campi. Innanzitutto, aggiornerai il modulo di registrazione. 

Modifica il file Resources / views / auth / register.blade.php.

@extends ('app') @section ('contenuto') 
Registrare
@if (conta ($ errori)> 0)
urla! Ci sono stati alcuni problemi con il tuo contributo.

    @foreach ($ errors-> all () come $ errore)
  • $ error
  • @endforeach
@finisci se
@endsection

Hai aggiunto il nome di battesimo e cognome campi al modulo di registrazione. Devi anche modificare il layout dell'app predefinito su Resources / 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 in config / 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