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.
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 MarketJag 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.
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.
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.
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åtaförnamn
ochefternamn
att vara tilldelningsbar.Uppdaterar vyn
Slutligen behöver du bara uppdatera front-end-vyerna för att inkludera
förnamn
ochefternamn
fält. Först kommer du att uppdatera registreringsformuläret.Redigera filen
resurser / views / auth / register.blade.php
.@extends ('app') @section ('content')@endsectionRegistrera@if (räkna ($ fel)> 0)Oj då! Det fanns några problem med din inmatning.@endif
@foreach ($ errors-> all () som $ error)
- $ error
@endforeachDu har lagt till
förnamn
ochefternamn
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 iconfig / 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