De authenticatiefacade van Laravel 5 gebruiken

Verificatie is een onderdeel van bijna alle webtoepassingen waarmee u werkt. Het is echt saai om in elk project de standaardcode te blijven herhalen. Welnu, het goede nieuws is dat Laravel 5 je van deze verveling bevrijdt door een kant-en-klare authenticatiegevel aan te bieden. 

Het enige wat u hoeft te doen, is de authenticatieserviceprovider configureren en aanpassen aan de behoeften van uw project. In deze snelle tip ga ik je precies laten zien hoe je dat moet doen.

Op zoek naar een snelkoppeling?

Als je een kant-en-klare, beproefde en geteste oplossing wilt, probeer dan Vanguard - Advanced PHP Login and User Management op Envato Market. Het is een PHP-applicatie, geschreven in Laravel 5.2, waarmee website-eigenaren snel authenticatie, autorisatie en gebruikersbeheer op hun website kunnen toevoegen en inschakelen.. 

Vanguard - Advanced PHP Login en User Management op Envato Market

De omgeving instellen

Ik ga ervan uit dat je begint met een nieuwe Laravel 5-installatie, maar je kunt al deze stappen overslaan als je ze al hebt gedaan. Allereerst ga je een aantal omgevingsvariabelen instellen in de .env bestand in de root van uw project. In principe hebben deze te maken met de databaseconfiguratie.

APP_ENV = local APP_DEBUG = true APP_KEY = 8wfDvMTvfXWHuYE483uXF11fvX8Qi8gC DB_HOST = localhost DB_DATABASE = laravel_5_authentication DB_USERNAME = root DB_PASSWORD = root CACHE_DRIVER = bestand SESSION_DRIVER = bestand

Let op de APP_ENV,  DB_HOST,  DB_DATABASE,  DB_USERNAME, en  DB_PASSWORD variabelen. De APP_ENV variabele laat Laravel weten in welke omgeving we onze webtoepassing willen gebruiken. De rest van de namen van de databasevariabelen ligt voor de hand. 

Dit is alles wat u hoeft te doen om de databaseverbinding te configureren. Maar hoe maakt Laravel van deze variabelen gebruik? Laten we de config / database.php het dossier. U zult het gebruik van de env () functie. Bijvoorbeeld, env ('DB_HOST', 'localhost'). Laravel 5 gebruikt deze functie om variabelen van de $ _ENV en $ _SERVER globale arrays, die automatisch worden gevuld met de variabelen die u definieert in de .env het dossier.

Migraties instellen

uitvoeren php artisan migrate: install --env = local in uw terminal aan de basis van uw project om de migraties lokaal te installeren. Merk ook op dat er al twee migraties zijn gedefinieerd in de databank / migraties map. Met deze migraties maakt Laravel 5 een gebruikers en een password_resets tabel, waardoor de standaard authenticatie boilerplate werkt. Ik ga een derde migratie maken om het te wijzigen gebruikers tabel om u te laten zien hoe u de standaard authenticatie-instellingen kunt aanpassen.

uitvoeren php artisan make: migration alter_users_table_remove_name_add_first_name_last_name in de terminal om een ​​derde migratie aan te maken.

dropColumn ( 'name'); $ table-> string ('first_name', 50) -> after ('id'); $ table-> string ('last_name', 50) -> after ('first_name'); );  / ** * Keer de migraties terug. * * @return void * / public function down () Schema :: table ('users', function ($ table) $ table-> dropColumn ('last_name'); $ table-> dropColumn ('first_name'); $ table-> string ('name') -> after ('id');); 

Zoals je ziet, heb je het naamveld verwijderd en nog twee velden toegevoegd Voornaam en achternaam met een maximale lengte van 50 tekens. U hebt ook de code toegevoegd die deze wijzigingen in de database oprolt.

uitvoeren php artisan migreren in de terminal. Als de migraties met succes zijn verlopen, moet u beide tabellen in uw database kunnen zien met de velden die u hebt gedefinieerd.

De registratiedienst configureren

U gaat de registratiedienst configureren om uw nieuw gedefinieerde toe te voegen gebruikers tabel velden. 

Bewerk het bestand app / Services / Registrar.php.

 'vereist | min: 3 | max: 50', 'last_name' => 'vereist | min: 3 | max: 50', 'email' => 'vereist | email | max: 255 | unique: gebruikers', 'wachtwoord '=>' vereist | bevestigd | min: 6 ',]);  / ** * Maak een nieuwe gebruikersinstantie na een geldige registratie. * * @param array $ data * @ return User * / public function create (array $ data) return User :: create (['first_name' => $ data ['first_name'], 'last_name' => $ data [ 'last_name'], 'email' => $ data ['email'], 'password' => bcrypt ($ data ['password']),]); 

De validator functie valideert de gegevens die zijn doorgegeven vanaf het gebruikersregistratieformulier. U hebt de standaard verwijderd naam veld en heeft de Voornaam en achternaam velden met een minimale lengte van drie tekens en een maximale lengte van 50 tekens voor beide. De creëren functie voegt de geregistreerde gebruiker toe aan de gebruikers tabel in de database, dus u hoeft alleen de Voornaam en achternaam velden ernaar toe.

Het gebruikersmodel bijwerken

U moet ook het gebruikersmodel bijwerken om de Voornaam en achternaam velden. 

Bewerk het bestand app / User.php.

De $ invulbare array geeft aan welke velden van het model openstaan ​​voor wijziging. U zou over het algemeen geen velden opnemen die automatisch worden gegenereerd in deze array of velden waarvoor geen invoer van een gebruiker nodig is, zoals de hash voor een onthoudt mij token. Het enige dat u hebt gedaan, is het updaten $ invulbare array om de Voornaam en achternaam om massa toewijsbaar te zijn.

De weergave bijwerken

Ten slotte hoeft u alleen de front-end views bij te werken om de Voornaam en achternaam velden. Eerst zal je het registratieformulier updaten. 

Bewerk het bestand resources / views / auth / register.blade.php.

@extends ('app') @section ('content') 
Registreren
@if (count ($ errors)> 0)
Whoops! Er waren wat problemen met je inbreng.

    @foreach ($ errors-> all () als $ fout)
  • $ fout
  • @endforeach
@stop als
@endsection

Je hebt de Voornaam en achternaam velden naar het registratieformulier. Je moet ook de standaard app-lay-out bewerken op resources / views / app.blade.php om de naam van de ingelogde gebruiker in het navigatiemenu te tonen.

      Laravel 5: De authenticatie-facade gebruiken            
@yield ( 'content')

Uw routes beveiligen

Om uw routes te beveiligen en alleen ingelogde gebruikers toegang te geven tot deze routes, moet u gebruikmaken van de auth-middleware die wordt aangeboden door Laravel. De auth-middleware is te vinden op app \ Http \ Middleware \ Authenticate.php

Hier zijn een paar voorbeelden van hoe je het kunt gebruiken om je routes te beschermen.

// route sluiting Route :: get ('', [' middleware '=>' auth ', function () // als gebruiker niet is ingelogd // hij / zij wordt omgeleid naar de inlogpagina // en deze code wordt niet uitgevoerd]); // controller actie Route :: get ('', [' middleware '=>' auth ',' gebruikt '=>'@']); // binnen een controllerklasse YourController breidt Controller uit public function __construct () $ this-> middleware (''); $ This-> middleware ('', [' only '=> ['']]); $ This-> middleware ('', [' behalve '=> ['']]); 

Wijzigen van de standaard authenticatieroutes

Je kunt uitvoeren php artisan route: lijst in de terminal om de standaardroutes te controleren die de authenticatiegevel gebruikt. U hebt toegang tot deze routes om uw authenticatiecode te testen. Hier zijn enkele voorbeelden van hoe deze routes kunnen worden gewijzigd.

Bewerk het bestand app / Http / routes.php.

// Voorbeeld 1 // aanmeldings-URL http://www.example.com/account/login // afmeld-URL http://www.example.com/account/logout // registratie-URL http: //www.voorbeeld. com / account / register Route :: controllers (['account' => 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Voorbeeld 2 // aanmeldings-URL http://www.example.com/login // afmeld-URL http://www.example.com/logout // registratie-URL http://www.example.com/register Route :: controllers (["=> 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Voorbeeld 3 // herdefinieer alle routes Route :: get ('example / register', 'Auth \ AuthController @ getRegister '); Route :: post (' example / register ',' Auth \ AuthController @ postRegister '); Route :: get (' example / login ',' Auth \ AuthController @ getLogin '); post ('example / login', 'Auth \ AuthController @ postLogin'); Route :: get ('example / logout', 'Auth \ AuthController @ getLogout'); Route :: get ('example / email', 'Auth \ PasswordController @ getEmail '); Route :: post (' example / email ',' Auth \ PasswordController @ postEmail '); Route :: get (' example / reset / code ',' Auth \ PasswordController @ getReset ') ; Route :: post ('example / reset', 'Auth \ PasswordController @ postReset');

Vergeet ook niet om de URI's dynamisch op te roepen in uw views en e-mailsjablonen met behulp van de Laravel-helpers. Je kunt zien hoe je dat doet in de GitHub-repository van deze snelle tip.

Laatste gedachten

De functie voor het opnieuw instellen van het wachtwoord stuurt de link voor het opnieuw instellen van het wachtwoord naar het e-mailadres van de gebruiker. Zorg er dus voor dat de e-mailconfiguratie is ingesteld in uw Laravel-project. De weergavesjabloon voor het e-mailadres voor het opnieuw instellen van het wachtwoord staat op resources / views / e-mails / password.blade.php. U kunt ook een paar andere basisopties configureren in de config / auth.php het dossier.

Ik hoop dat je deze snelle tip gemakkelijk te volgen vond. Tot mijn volgende stuk Tuts +, fijne codering!

Trouwens, als je extra hulp nodig hebt bij het oplossen van bugs of het maken van aanpassingen waarmee je je niet comfortabel voelt, neem dan contact op met een van de PHP-serviceproviders op Envato Studio. Ze kunnen u snel en betrouwbaar helpen met een breed scala aan problemen, zodat u met een kleine investering van geld een hoop tijd kunt besparen.!

PHP-serviceproviders op Envato Studio