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.
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 MarketJeg 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.
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.
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.
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 å tillatefornavn
ogetternavn
å være masse tilordnet.Oppdaterer visningen
Endelig trenger du bare å oppdatere frontend-visningene for å inkludere
fornavn
ogetternavn
Enger. Først vil du oppdatere registreringsskjemaet.Rediger filen
ressurser / synspunkter / auth / register.blade.php
.@extends ('app') @section ('innhold')@endsectionRegistrere@if (telle ($ feil)> 0)Whoops! Det var noen problemer med innspillingen.@slutt om
@foreach ($ errors-> all () som $ feil)
- $ error
@endforeachDu har lagt til
fornavn
ogetternavn
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 iconfig / 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