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.
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 MarketIk 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.
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.
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.
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 deVoornaam
enachternaam
om massa toewijsbaar te zijn.De weergave bijwerken
Ten slotte hoeft u alleen de front-end views bij te werken om de
Voornaam
enachternaam
velden. Eerst zal je het registratieformulier updaten.Bewerk het bestand
resources / views / auth / register.blade.php
.@extends ('app') @section ('content')@endsectionRegistreren@if (count ($ errors)> 0)Whoops! Er waren wat problemen met je inbreng.@stop als
@foreach ($ errors-> all () als $ fout)
- $ fout
@endforeachJe hebt de
Voornaam
enachternaam
velden naar het registratieformulier. Je moet ook de standaard app-lay-out bewerken opresources / 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 deconfig / 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