Sette opp brukerautentisering i Laravel ved hjelp av Confide

Brukerautentisering er en del av nesten alle webapplikasjoner. Selv om det er vanlig, viser et dypere utseende at det ikke er så enkelt som det kan virke. Husk at validering, passordgjenoppretting og bekreftelse av e-post er avgjørende for ethvert anstendig autentiseringsskjema.

Confide er en godkjenningsløsning for Laravel laget for å redusere det repeterende arbeidet som involverer brukernes ledelse. Det er en tørr tilnærming på funksjoner som opprettelse av kontoer, logg inn, logg ut, bekreftelse via e-post, tilbakestilling av passord osv.

Siden de tidlige versjonene hadde Confide alltid god adopsjon blant utviklere og en bred tilstedeværelse i Laravel-prosjekter. Med en nylig oppdatering er pakken nå kompatibel med Laravel 4.2, som er den siste stabile utgivelsen av Laravel på tidspunktet for denne skrivingen.

Hva skal vi gjøre

I denne opplæringen begynner vi fra begynnelsen ved å lage vår Laravel-app ved hjelp av Komponist og deretter:

  • Opprett et registreringsskjema med et komplett sett med valideringsregler
  • et påloggingsskjema med et "Glemt passord" -alternativet som vil sende en kobling for brukeren til å omdefinere passordet sitt
  • bruk Laravel-filtre for å bare tillate loggete brukere kan få tilgang til en bestemt rute.

Opprette applikasjonen

Først av alt, la oss lage programmet ved å bruke Komponist.

$ komponent create-project laravel / laravel myapp

Installere Confide

Nå, med inne i prosjektkatalogen, rediger du krever nøkkel til composer.json fil og inkludere konfidensiell oppføring:

"krever": "laravel / framework": "~ 4.2", "zizaco / confide": "~4.0@dev",

Kjør deretter komponistoppdatering på vår nye avhengighet:

$ komponent oppdatering zizaco / confide

I config / app.php av prosjektet vårt, legg til 'Zizaco \ betro \ tjenesteleverandøren' til slutten av leverandørene:

... 'providers' => array ('Illuminate \ Foundation \ Providers \ ArtisanServiceProvider', 'Illuminate \ Auth \ AuthServiceProvider', ... 'Zizaco \ Confide \ ServiceProvider',), ... 

Legg også til 'Confide' => 'Zizaco \ Confide \ Facade' til aliaser-arrayet i samme fil:

... 'aliases' => array ('App' => 'Illuminere \ Support \ Facader \ App', 'Artisan' => 'Illuminere \ Support \ Facades \ Artisan', ... 'Confide' => 'Zizaco \ Confide \ Facade ',),

Sett adresse og Navn i config / mail.php. Denne konfigurasjonen vil bli brukt til å sende e-post til kontobekreftelse og passordreservering til brukerne. For denne opplæringen kan du bruke din personlige SMTP-server for å få ting til å fungere

Hvis du for eksempel bruker Gmail, kan du gjøre følgende:

'driver' => 'smtp', 'vert' => 'smtp.gmail.com', // Til testformål 'fra' => array ('adresse' => '[email protected]', 'navn' => 'MyApp'), ... 'brukernavn' => '[email protected]', 'passord' => ',... 

Brukermodell

Nå generer Confide-migrasjonene ved å kjøre:

$ php artisan confide: migrering $ php artisan migrere

Dette vil sette opp et bord som inneholder e-post, passord, remember_token, bekreftelseskode og bekreftet kolonner. Dette er standardfeltene som trengs for Confide. Du er velkommen til å legge til flere kolonner i tabellen senere.

Erstatt all koden i app / modeller / User.php til:

 

Zizaco \ betro \ ConfideUser Egenskapen tar seg av de fleste oppføringene i brukermodellen.

UsersController and Routes

Confide inneholder et generatorverktøy som vil skape en kontroller og skrive ruter for oss. Å opprette UsersController og for å registrere ruter la oss kjøre disse kommandoene:

$ php artisan confide: controller $ php artisan confide: ruter

Siden nye klasser er opprettet, må vi oppdatere autoload-filene.

$ komponent dump-autoload

Klar til bruk

Vi er ferdige! Vår søknad har nå alle funksjonene som Confide tilbyr. Kjør programserveren ved å ringe php artisan tjene i terminalen.

Følgende ruter er tilgjengelige i vår søknad:

http: // localhost: 8000 / users / create http: // localhost: 8000 / brukere / login http: // localhost: 8000 / users / forgot_password

For å få tilgang til den nåværende brukeren kan vi ringe Betro :: bruker (). Derfor, for å vise navnet på den nåværende brukeren, må vi erstatte innholdet av app / visninger / hello.php med:

    Brukerauth med Confide   

Hei Confide

Hei

Gå nå og få tilgang http: // localhost: 8000 / brukere / opprette å skape vår første bruker. Du vil motta en bekreftelses-epost rett etter at du har sendt inn skjemaet (hvis du har fylt config / mail.php med de riktige verdiene). Logg inn og du vil se brukernavnet på skjermen.

Forbedre visuals

Standardformene til Confide er kompatible med Bootstrap. Så ikke bli skremt av "ugliness" av dem på en side uten noen CSS. Rediger kontrolleren generert av Confide (UserController.php) og oppdater opprettelsesmetoden til:

 

Dermed vil vår søknad gjengi visningen users.signup. La oss lage denne visningen i app / visninger / brukere som signup.blade.php med følgende innhold:

    Brukerauth med Confide  Importer twitter bootstrap og sett noen styling      

Melde deg på

Gjør registreringsskjemaet til Confide Confide :: makeSignupForm () -> render ();

Etter dette vil vi få et mye mer elegant resultat i brukeropprettelsesskjemaet på http: // localhost: 8000 / bruker / lager:

Du trenger ikke å bruke skjemaene generert av Confide. Du kan lage din egen visning som sender data til POST ruter.

Begrensning av tilgang

Åpen app / routes.php og legg til koden under til bunnen av filen:

// Dashboard rute Route :: get ('userpanel / dashboard', funksjon () return View :: make ('userpanel.dashboard');); // Bruker auth filter til rutene i admin / Route :: når ('brukerpanel / *', 'auth');

Opprett visningsfilen app / visninger / Userpanel / dashboard.blade.php:

    Brukerauth med Confide  Importer twitter bootstrap og sett noen styling      

Confide :: bruker () -> brukernavn

e-post: Confide :: bruker () -> email

Nå som vi har brukt filteret på alle ruter innenfor Userpanel. Vi trenger en liten tweak for å sikre at auth filteret omdirigerer brukeren til riktig innloggingsadresse. Redigere app / filters.php på nett 46 for å erstatte returnere omdirigering :: gjest ('logg inn'); med:

... returnere omdirigere :: gjest ('brukere / logg inn'); ... 

Det gjort, den Userpanel / dashbord Siden vil bare være tilgjengelig for brukere som er logget inn i programmet. Filteret vil omdirigere gjestebrukere til påloggingsskjemaet og deretter tilbake til dashbordet når de er logget inn.

Konklusjon

Det er mulig å merke seg at vi raskt kunne konfigurere brukerautentisering for appen vår. Den genererte kontrolleren, overføringen og rutene kan også redigeres for å tilpasse hvordan vi skal håndtere hver detalj.

Vi har ikke fokusert mye på ConfideUser egenskap, men jeg tror det er viktig å rydde opp ting. Når modellen din bruker ConfideUser egenskap, du trenger ikke å bekymre deg for å implementere grunnleggende logikken. Samtidig kan du fortsatt overskrive metodene og tilpasse dem, om nødvendig.

Vi kan si at Confide er en tørr tilnærming til brukerautentisering. Det gir det praktiske å ha funksjonaliteten ute av boksen, samtidig som den gir høy tilpasning.

Sjekk ut Confide on GitHub. Hvis du hadde noe problem mens du fulgte denne opplæringen, kan du kontakte meg.