Med Laravel 5 s Authentication Facade

Autentisering är en del av nästan alla webbapplikationer du jobbar med. Det är väldigt tråkigt att fortsätta att upprepa alla pannkodskoder i varje projekt. Tja, den goda nyheten är Laravel 5, som ger dig den här kedsomheten genom att ge en färdigautomatiserad fasad. 

Allt du behöver göra är att konfigurera och anpassa autentiseringstjänstleverantören till projektets behov. I det här snabba tipset ska jag visa dig exakt hur man gör det.

Letar du efter en genväg?

Om du vill ha en färdig, beprövad lösning, prova Vanguard - Advanced PHP Login och User Management på Envato Market. Det är en PHP-applikation, skrivad i Laravel 5.2, som gör att webbplatsägare snabbt kan lägga till och aktivera autentisering, auktorisering och användarhantering på deras hemsida. 

Vanguard - Avancerad PHP-inloggning och användarhantering på Envato Market

Ställa in miljön

Jag kommer att anta att du börjar med en ny Laravel 5-installation, men du kan hoppa över något av dessa steg om du redan har gjort dem. Först kommer du att ställa in några miljövariabler i .env filen till roten till ditt projekt. I grund och botten har dessa att göra med databaskonfigurationen.

APP_ENV = lokal APP_DEBUG = true APP_KEY = 8wfDvMTvfXWHuYE483uXF11fvX8Qi8gC DB_HOST = localhost DB_DATABASE = laravel_5_autentisering DB_USERNAME = root DB_PASSWORD = root CACHE_DRIVER = fil SESSION_DRIVER = fil

Lägg märke till APP_ENV,  DB_HOST,  DB_DATABASE,  DB_USERNAME, och  DB_PASSWORD variabler. De APP_ENV variabel berättar Laravel vilken miljö vi vill köra vår webbapplikation i. Resten av databasvariabelnamnen är ganska uppenbara. 

Detta är allt du behöver göra för att konfigurera databasanslutningen. Men hur använder Laravel dessa variabler? Låt oss undersöka config / database.php fil. Du kommer att märka användningen av env () fungera. Till exempel, env ('DB_HOST', 'localhost'). Laravel 5 använder denna funktion för att fånga variabler från $ _ENV och $ _SERVER globala arrayer, som automatiskt fylls med de variabler du definierar i .env fil.

Ställa in migreringarna

Kör php artisan migrera: installera --env = local i din terminal vid roten till ditt projekt för att installera migrationerna lokalt. Observera också att det finns två migreringar som redan definierats i databas / migreringar mapp. Med hjälp av dessa migreringar skapar Laravel 5 en användare och a password_resets bordet, vilket gör att standard-autentiseringskällan kan fungera. Jag ska skapa en tredje migrering för att ändra användare tabellen bara för att visa dig hur du anpassar standardautentiseringsinställningen.

Kör php artisan make: migration alter_users_table_remove_name_add_first_name_last_name i terminalen för att skapa en tredje migrering.

dropColumn ( 'name'); $ table-> string ('first_name', 50) -> efter ('id'); $ table-> string ('last_name', 50) -> after ('first_name'); );  / ** * Omvandla migrationerna. * * @return void * / public function down () Schema :: tabell ('användare', funktion ($ tabell) $ table-> dropColumn ('last_name'); $ table-> dropColumn ('first_name'); $ table-> string ('name') -> efter ('id');); 

Som du kan se har du tagit bort fältet och lagt till ytterligare två fält för förnamn och efternamn med en maximal längd på 50 tecken. Du har också lagt till koden som rullar tillbaka dessa ändringar i databasen.

Kör php artisan migrera i terminalen. Om migreringen gick framgångsrikt ska du kunna se båda tabellerna i din databas med de fält du definierade.

Konfigurera Registrartjänsten

Du kommer att konfigurera Registrar-tjänsten för att lägga till din nyligen definierade användare tabellfält. 

Redigera filen app / tjänster / Registrar.php.

 'krävs | min: 3 | max: 50', 'last_name' => 'krävs | min: 3 | max: 50', 'email' => 'krävs | email | max: 255 | unik: användarnamn, lösenord '=>' krävs | bekräftat | min: 6 ',]);  / ** * Skapa en ny användarinstans efter en giltig registrering. * * @param array $ data * @return Användare * / public function create (array $ data) returnera Användare :: skapa (['first_name' => $ data ['first_name'], 'last_name' => $ data [ 'last_name'], 'email' => $ data ['email'], 'password' => bcrypt ($ data ['lösenord']))]; 

De validator funktionen validerar data som skickats in från användarregistreringsformuläret. Du har tagit bort standardvärdet namn fält och lagt till förnamn och efternamn Fält med en längd på minst tre tecken och en max längd på 50 tecken för båda. De skapa funktion lägger till den registrerade användaren till användare tabell i databasen, så du behöver bara inkludera förnamn och efternamn fält till den.

Uppdatering av användarmodellen

Du måste också uppdatera användarmodellen för att inkludera förnamn och efternamn fält. 

Redigera filen app / user.php.

De $ ifyllbara array anger vilka fält av modellen som är öppna för modifiering. Du brukar inte inkludera fält som automatiskt genereras i denna array eller fält som inte kräver en användares inmatning som hash för en kom ihåg mig token. Allt du har gjort är att uppdatera $ ifyllbara array för att tillåta förnamn och efternamn att vara tilldelningsbar.

Uppdaterar vyn

Slutligen behöver du bara uppdatera front-end-vyerna för att inkludera förnamn och efternamn fält. Först kommer du att uppdatera registreringsformuläret. 

Redigera filen resurser / views / auth / register.blade.php.

@extends ('app') @section ('content') 
Registrera
@if (räkna ($ fel)> 0)
Oj då! Det fanns några problem med din inmatning.

    @foreach ($ errors-> all () som $ error)
  • $ error
  • @endforeach
@endif
@endsection

Du har lagt till förnamn och efternamn fält till registreringsformuläret. Du måste också redigera standardapplayouten på resurser / views / app.blade.php för att visa den inloggade användarens namn i navigeringsmenyn.

      Laravel 5: Använd autentiseringsfasaden            
@yield ( 'innehåll')

Säkra dina rutor

För att säkra dina rutter och tillåta endast inloggade användare att kunna komma åt dem måste du använda auth middleware som tillhandahålls av Laravel. Auth middleware finns på app \ Http \ Middleware \ Authenticate.php

Här är några exempel på hur du använder den för att skydda dina vägar.

// route closure Route :: get ('', [' middleware '=>' auth ', funktion () // om användaren inte är inloggad // han / hon kommer att omdirigeras till inloggningssidan // och denna kod kommer inte att utföras]); // controller-åtgärd Rutt :: get ('', [' middleware '=>' auth ',' uses '=>'@']); // inom en kontrollerklass Yourcontroller utökar Controller public function __construct () $ this-> middleware (''); $ This-> mellan ('', [' only '=> ['']]); $ This-> mellan ('', [' utom '=> ['']]); 

Ändra standardautentiseringsrutorna

Du kan utföra php artisan route: lista i terminalen för att kontrollera standardrutorna använder autentiseringsfasaden. Du kan komma åt dessa rutter för att testa din autentiseringskod. Här är några exempel på hur du ändrar dessa rutter.

Redigera filen app / HTTP / routes.php.

// Exempel 1 // Logga in url http://www.example.com/account/login // Logga ut url http://www.example.com/account/logout // registreringsadress http: //www.example. com / account / register Rutt :: controllers (['account' => 'Auth \ AuthController', 'lösenord' => 'Auth \ PasswordController',]); // Exempel 2 // Logga in url http://www.example.com/login // Logga ut url http://www.example.com/logout // Registreringsadress http://www.example.com/register Route :: kontroller (["=> 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Exempel 3 // omdefiniera alla rutter Rutt :: get ('example / register', 'Auth \ AuthController @ getRegister '); Rutt :: post (' exempel / register ',' Auth \ AuthController @ postRegister '); Rutt :: få (' exempel / inloggning ',' Auth \ AuthController @ getLogin '); post ('exempel / inloggning', 'Auth \ AuthController @ postLogin'); Rutt :: få ('exempel / logg', 'Auth \ AuthController @ getLogout'); \ PasswordController @ getEmail '); Rutt :: post (' exempel / email ',' Auth \ PasswordController @ postEmail '); Rutt :: få (' exempel / återställ / / code ',' Auth \ PasswordController @ getReset ') ; Rutt :: inlägg ('exempel / återställ', 'Auth \ PasswordController @ postReset');

Också, kom ihåg att ringa URI-enheterna dynamiskt i dina synpunkter och e-postmallar med hjälp av Laravel-hjälparna. Du kan se hur du gör det i GitHub-arkivet i denna snabba tips.

Slutgiltiga tankar

Lösenordsåterställningsfunktionen skickar länken för lösenordsåterställning till användarens e-post, så se till att du har konfigurationen av e-postkonfigurationen i ditt Laravel-projekt. Visningsmallen för e-postadressen för lösenordsåterställning är på resurser / views / e-post / password.blade.php. Du kan också konfigurera några andra grundläggande alternativ i config / auth.php fil.

Jag hoppas att du hittade det här snabba tipset lätt att följa. Till min nästa Tuts + bit, glad kodning!

Förresten, om du behöver extra hjälp med att fixa fel eller göra anpassningar du inte är bekväm med, kontakta en av PHP-tjänsteleverantörerna på Envato Studio. De kan hjälpa dig med ett stort antal problem snabbt och tillförlitligt, så att du med en liten investering av pengar kan spara mycket tid!

PHP-tjänsteleverantörer på Envato Studio