Bruke Laravel 5's Authentication Facade

Autentisering er en del av nesten alle webapplikasjonene du jobber med. Det er veldig kjedelig å fortsette å gjenta alle boilerplate-koden i hvert prosjekt. Vel, den gode nyheten er at Laravel 5 gjør deg kjent med denne kjedsomheten ved å gi en brukervennlig autentiseringsfasade. 

Alt du trenger å gjøre er å konfigurere og tilpasse godkjenningsleverandøren til prosjektets behov. I dette raske tipset skal jeg vise deg nøyaktig hvordan du gjør det.

Ser etter en snarvei?

Hvis du vil ha en ferdig, testet og testet løsning, kan du prøve Vanguard - Advanced PHP Login og User Management på Envato Market. Det er en PHP-applikasjon, skrevet i Laravel 5.2, som gjør at eiere kan raskt legge til og aktivere godkjenning, autorisasjon og brukeradministrasjon på deres nettsted. 

Vanguard - Avansert PHP-innlogging og brukeradministrasjon på Envato Market

Sette opp miljøet

Jeg kommer til å anta at du starter med en fersk Laravel 5-installasjon, men du kan hoppe over noen av disse trinnene hvis du allerede har gjort dem. Først av, du skal sette noen miljøvariabler i .env fil på roten av prosjektet ditt. I utgangspunktet har disse å gjøre med databasekonfigurasjonen.

APP_ENV = lokal APP_DEBUG = sant APP_KEY = 8wfDvMTvfXWHuYE483uXF11fvX8Qi8gC DB_HOST = lokalhost DB_DATABASE = laravel_5_autentisering DB_USERNAME = rot DB_PASSWORD = rot CACHE_DRIVER = fil SESSION_DRIVER = fil

Legg merke til APP_ENV,  DB_HOST,  DB_DATABASE,  DB_USERNAME, og  db-passord variabler. De APP_ENV variabel forteller Laravel hvilket miljø vi ønsker å kjøre vår webapplikasjon på. Resten av databasevariabelnavnet er ganske tydelig. 

Dette er alt du trenger å gjøre for å konfigurere databaseforbindelsen. Men hvordan bruker Laravel disse variablene? La oss undersøke config / database.php fil. Du vil legge merke til bruken av env () funksjon. For eksempel, env ('DB_HOST', 'localhost'). Laravel 5 bruker denne funksjonen til å fange variabler fra $ _ENV og $ _SERVER globale arrays, som automatisk befolkes med variablene du definerer i .env fil.

Sette opp overføringene

Henrette php artisan migrere: installere --env = local i terminalen din på roten av prosjektet ditt for å installere flyttingene lokalt. Vær også oppmerksom på at det er to migrasjoner som allerede er definert i database / vandringer mappe. Ved å bruke disse overføringene, skaper Laravel 5 en brukere og a password_resets tabell, slik at standard autentiseringskjelett kan fungere. Jeg skal lage en tredje migrering for å modifisere brukere tabell bare for å vise deg hvordan du tilpasser standardautentiseringsoppsettet.

Henrette php artisan make: migrasjon alter_users_table_remove_name_add_first_name_last_name i terminalen for å opprette en tredje migrasjon.

dropColumn ( 'navn'); $ table-> string ('first_name', 50) -> etter ('id'); $ table-> string ('last_name', 50) -> etter ('first_name'); );  / ** * Omvendt migrasjonene. * * @return void * / offentlig funksjon ned () Schema :: tabell ('brukere', funksjon ($ tabell) $ table-> dropColumn ('last_name'); $ table-> dropColumn ('first_name'); $ tabell-> streng ('navn') -> etter ('id');); 

Som du kan se, har du fjernet navnefeltet og lagt til ytterligere to felt for fornavn og etternavn med en maksimal lengde på 50 tegn. Du har også lagt til koden som ruller tilbake disse endringene i databasen.

Henrette php artisan migrere i terminalen. Hvis overføringene løp ut, bør du kunne se begge tabellene i databasen med feltene du definerte.

Konfigurere Registrartjenesten

Du skal konfigurere Registrar-tjenesten for å legge til din nylig definerte brukere tabellfelt. 

Rediger filen app / Tjenester / Registrar.php.

 'required | min: 3 | max: 50', 'last_name' => 'obligatorisk | min: 3 | max: 50', 'email' => 'påkrevd | email | max: 255 | unikt: brukere', 'passord '=>' kreves | bekreftet | min: 6 ',]);  / ** * Opprett en ny brukereksempel etter en gyldig registrering. * * @param array $ data * @return Bruker * / offentlig funksjon opprette (array $ data) retur Bruker: lage (['first_name' => $ data ['first_name'], 'last_name' => $ data [ 'last_name'], 'email' => $ data ['email'], 'passord' => bcrypt ($ data ['passord']))]; 

De validator funksjonen validerer dataene som er sendt inn fra brukerregistreringsskjemaet. Du har fjernet standardinnstillingen Navn feltet og lagt til fornavn og etternavn felt med en minimumslengde på tre tegn og en maksimal lengde på 50 tegn for begge deler. De skape funksjon legger til den registrerte brukeren til brukere tabell i databasen, så du trenger bare å inkludere fornavn og etternavn felt til det.

Oppdaterer brukermodellen

Du må også oppdatere brukermodellen for å inkludere fornavn og etternavn Enger. 

Rediger filen app / User.php.

De $ utfyllbare array angir hvilke felt av modellen som er åpne for modifikasjon. Du vil vanligvis ikke inkludere felt som automatisk genereres i denne gruppen eller feltene som ikke krever en brukeres innspill som hash for a remember me token. Alt du har gjort er å oppdatere $ utfyllbare array for å tillate fornavn og etternavn å være masse tilordnet.

Oppdaterer visningen

Endelig trenger du bare å oppdatere frontend-visningene for å inkludere fornavn og etternavn Enger. Først vil du oppdatere registreringsskjemaet. 

Rediger filen ressurser / synspunkter / auth / register.blade.php.

@extends ('app') @section ('innhold') 
Registrere
@if (telle ($ feil)> 0)
Whoops! Det var noen problemer med innspillingen.

    @foreach ($ errors-> all () som $ feil)
  • $ error
  • @endforeach
@slutt om
@endsection

Du har lagt til fornavn og etternavn felt til registreringsskjemaet. Du må også redigere standard applayout på ressurser / visninger / app.blade.php for å vise den innloggede brukerens navn i navigasjonsmenyen.

      Laravel 5: Bruk autentiseringsfacaden            
@yield ( 'innhold')

Sikre rutene dine

For å sikre ruter og bare tillate innloggede brukere å kunne få tilgang til dem, må du gjøre bruk av auth middleware som leveres av Laravel. Auth middleware kan bli funnet på app \ Http \ Middleware \ Authenticate.php

Her er noen eksempler på hvordan du bruker den for å beskytte ruter.

// ruteslutt Rute :: get ('', [' middleware '=>' auth ', funksjon () // hvis bruker ikke er logget inn // han / hun blir omdirigert til innloggingssiden // og denne koden vil ikke bli utført]); // kontrolleren handling rute :: get ('', [' middleware '=>' auth ',' uses '=>'@']); // i en kontrollerklasse YourController utvider Controller public function __construct () $ this-> middleware (''); $ Dette-> mellomvare ('', [' only '=> ['']]); $ Dette-> mellomvare ('', [' unntatt '=> ['']]); 

Endre standardautentiseringsrutene

Du kan kjøre php artisan rute: liste i terminalen for å sjekke standardruter bruker autentiseringsfasaden. Du kan få tilgang til disse ruter for å teste autentiseringskoden. Her er noen eksempler på hvordan du kan endre disse ruter.

Rediger filen app / Http / routes.php.

// Eksempel 1 // login url http://www.example.com/account/login // logout url http://www.example.com/account/logout // registreringsadresse http: //www.example. com / account / register Rute :: controllers (['account' => 'Auth \ AuthController', 'passord' => 'Auth \ PasswordController',]); // Eksempel 2 // login url http://www.example.com/login // logout url http://www.example.com/logout // registreringsadresse http://www.example.com/register route :: kontroller (["=> 'Auth \ AuthController', 'passord' => 'Auth \ PasswordController',]); // Eksempel 3 // omdefinere alle ruter Rute :: get ('example / register', 'Auth \ AuthController @ getRegister '); Rute :: post (' eksempel / register ',' Auth \ AuthController @ postRegister '); Rute :: få (' eksempel / logg inn ',' Auth \ AuthController @ getLogin '); post ('eksempel / logg inn', 'Auth \ AuthController @ postLogin'); Rute :: få ('eksempel / logg ut', 'Auth \ AuthController @ getLogout'); Rute :: få ('eksempel / e-post' \ PasswordController @ getEmail '); Rute :: post (' example / email ',' Auth \ PasswordController @ postEmail '); Rute :: få (' eksempel / reset / code ',' Auth \ PasswordController @ getReset ') ; Rute :: innlegg ('eksempel / reset', 'Auth \ PasswordController @ postReset');

Husk også å ringe URIene dynamisk i dine visninger og e-postmaler ved hjelp av Laravel-hjelperne. Du kan se hvordan du gjør det i GitHub-depotet for dette raske tipset.

Siste tanker

Tilbakestillingsfunksjonen for passord sender passordet tilbakestill koblingen til brukerens e-post, så sørg for at du har konfigurasjonen av e-postkonfigurasjonen i Laravel-prosjektet. Visningsmalen for e-posten for tilbakestilling av passord er på ressurser / synspunkter / e-post / password.blade.php. Du kan også konfigurere noen andre grunnleggende alternativer i config / auth.php fil.

Jeg håper du fant dette raske tipset lett å følge. Til mitt neste Tuts + stykke, lykkelig koding!

For øvrig, hvis du trenger ekstra hjelp med å fikse feil eller gjøre tilpasninger du ikke er komfortabel med, ta kontakt med en av PHP-tjenesteleverandørene på Envato Studio. De kan hjelpe deg med et bredt spekter av problemer raskt og pålitelig, slik at du med en liten investering av penger kan spare deg mye tid!

PHP-tjenesteleverandører på Envato Studio