Ställa in användarautentisering i Laravel med Confide

Användarautentisering är en del av nästan alla webbapplikationer. Även om det är vanligt, visar ett djupare utseende att det inte är så enkelt som det kan tyckas. Kom ihåg att validering, återställning av lösenord och bekräftelse av e-post är avgörande för alla anständiga autentiseringsformulär.

Confide är en autentiseringslösning för Laravel för att minska det repetitiva arbetet med användarnas hantering. Det är ett torkat tillvägagångssätt på funktioner som skapande av konton, inloggning, loggning, bekräftelse via e-post, återställning av lösenord etc..

Sedan de tidiga versionerna hade Confide alltid god adoption bland utvecklare och en bred närvaro i Laravel-projekt. Med en nyligen uppdaterad version är paketet nu kompatibelt med Laravel 4.2, vilket är den senaste stabila versionen av Laravel vid skrivets gång.

Vad vi ska göra

I den här handledningen börjar vi från början med att skapa vår Laravel-app med Composer och sedan:

  • skapa en registreringsblankett med en fullständig uppsättning valideringsregler
  • ett inloggningsformulär med ett "Glömt mitt lösenord" alternativ som skickar en länk till användaren för att omdefiniera sitt lösenord
  • använd Laravel-filter för att bara tillåta inloggade användare att komma åt en viss rutt.

Skapa applikationen

Först av allt, låt oss skapa applikationen med hjälp av kompositören.

$ komponent skapa-projekt laravel / laravel myapp

Installera Confide

Nu, med inuti projektkatalogen, redigerar du fordra nyckeln till composer.json fil och inkludera förtroendeuppgift:

"kräver": "laravel / framework": "~ 4.2", "zizaco / confide": "~4.0@dev",

Kör sedan komponistuppdatering på vårt nya beroende:

$ komponent uppdatering zizaco / confide

I config / app.php av vårt projekt, lägg till 'Zizaco \ Confide \ ServiceProvider' till slutet av leverantörerna array:

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

Lägg även till 'Confide' => 'Zizaco \ Confide \ Facade' till aliaserna i samma fil:

... 'aliases' => array ('App' => 'Illuminera \ Support \ Fasader \ App', 'Artisan' => 'Illuminera \ Support \ Fasader \ Artisan', ... 'Confide' => 'Zizaco \ Confide \ Facade ',),

Ställ in adress och namn i config / mail.php. Denna konfiguration kommer att användas för att skicka e-post till kontobekräftelse och återställning av lösenord till användarna. För denna handledning kan du använda din personliga SMTP-server för att få saker att fungera

Om du till exempel använder Gmail kan du göra följande:

'driver' => 'smtp', 'värd' => 'smtp.gmail.com', // För teständamål 'från' => array ('adress' => '[email protected]', 'namn' => 'MyApp'), ... 'användarnamn' => '[email protected]', 'password' => ',... 

Användarmodell

Skapa nu Confide-migrationerna genom att köra:

$ php artisan confide: migrering $ php artisan migrera

Detta ställer in en tabell som innehåller e-post, Lösenord, remember_token, bekräftelsekod och bekräftade kolumner. Det här är standardfälten som behövs för Confide. Gärna lägga till fler kolumner till bordet senare.

Byt ut all kod i app / modeller / user.php till:

 

Zizaco \ Confide \ ConfideUser egenskapen tar hand om de flesta beteenden hos användarmodellen.

UsersController och Routes

Confide innehåller ett generatorverktyg som skapar en kontroller och skriver ruttorna för oss. För att skapa UsersController och för att registrera rutterna låt oss köra dessa kommandon:

$ php artisan confide: controller $ php artisan confide: rutter

Eftersom nya klasser har skapats måste vi uppdatera autoload-filerna.

$ komponent dump-autoload

Redo att använda

Vi är klara! Vår ansökan har nu alla funktioner som Confide erbjuder. Kör applikationsservern genom att ringa php artisan tjäna i terminalen.

Det följande SKAFFA SIG rutter finns i vår ansökan:

http: // localhost: 8000 / users / create http: // localhost: 8000 / användare / inloggning http: // localhost: 8000 / users / forgot_password

För att komma åt den nuvarande användaren kan vi ringa Anförtro :: användare (). För att visa namnet på den nuvarande användaren behöver vi därför ersätta innehållet i app / vyer / hello.php med:

    Användarauth med Confide   

Hej Confide

Hej

Gå nu och få tillgång till http: // localhost: 8000 / användare / skapa för att skapa vår första användare. Du kommer att få ett bekräftelsemeddelande direkt efter att du skickat in formuläret (om du har fyllt i config / mail.php med rätt värden). Logga in och du kommer att se användarnamnet på skärmen.

Förbättra visuella

Standardformerna för Confide är kompatibla med Bootstrap. Så var inte skrämd av deras "fulhet" på en sida utan någon CSS. Redigera kontrollenheten som genereras av Confide (UserController.php) och uppdatera skapningsmetoden till:

 

Således kommer vår ansökan att göra visningen users.signup. Låt oss skapa den här vyn i app / visningar / användare som signup.blade.php med följande innehåll:

    Användarauth med Confide  Importera twitter bootstrap och sätt några styling      

Bli Medlem

Ger registreringsformuläret för Confide Confide :: makeSignupForm () -> render ();

Efter det kommer vi att få ett mycket mer elegant resultat i användarskapningsformuläret på http: // localhost: 8000 / user / skapa:

Du behöver inte använda de formulär som genereras av Confide. Du kan skapa din egen vy som skickar data till POSTA rutter.

Begränsa åtkomst

Öppna app / routes.php och lägg till koden nedan till botten av filen:

// Dashboard-rutt Route :: get ('userpanel / dashboard', funktion () return View :: make ('userpanel.dashboard');); // Gäller auth filter till rutorna inom admin / Route :: när ('userpanel / *', 'auth');

Skapa visningsfilen app / vyer / User / dashboard.blade.php:

    Användarauth med Confide  Importera twitter bootstrap och sätt några styling      

Confide :: användare () -> användarnamn

e-post: Confide :: användare () -> email

Nu när vi har tillämpat filtret på alla rutter inom Userpanel. Vi behöver en liten tweak för att se till att auth filtret omdirigerar användaren till den korrekta inloggningsadressen. Redigera app / filters.php uppkopplad 46 för att ersätta returnera Omdirigering :: gäst ('inloggning'); med:

... returnera omdirigering :: gäst ("användare / inloggning"); ... 

Det gjort, den Userpanel / instrumentbräda sidan är bara tillgänglig för användare som är inloggade i programmet. Filtret omdirigerar gästanvändare till inloggningsformuläret och sedan tillbaka till instrumentpanelen när de är inloggade.

Slutsats

Det är möjligt att notera att vi snabbt kunde konfigurera användarautentisering för vår app. Den genererade styrenheten, migrering och rutter kan också redigeras för att anpassa hur vi hanterar varje detalj.

Vi har inte fokuserat mycket på ConfideUser egenskap, men jag anser att det är viktigt att rensa upp saker. När din modell använder ConfideUser egenskap, du behöver inte oroa sig för att implementera den grundläggande logiken. Samtidigt kan du fortfarande skriva över metoderna och anpassa dem, om det behövs.

Vi kan säga att Confide är ett torkat tillvägagångssätt för användarautentisering. Det ger bekvämligheten med att ha funktionaliteten ute i rutan samtidigt som den tillåter hög anpassning.

Kolla in Confide på GitHub. Om du hade något problem när du följer den här handledningen, var god kontakta mig.