Nieuwe functies in Laravel 5.2

In dit artikel zal ik de nieuwe kenmerken van Laravel 5.2 bekijken en ze een voor een beschrijven. De nieuwe functies worden hieronder vermeld:

  • impliciete binding van het routemodel
  • formulier array validatie
  • API-tariefbeperkende middleware
  • middleware groepen
  • authenticatie steiger
  • meerdere stuurprogramma's voor authenticatiebewaking

Meerdere authenticatie bewaker stuurprogramma's

Deze functie zal je helpen, vooral wanneer je Doctrine ORM Auth bij meerdere providers nodig hebt. In mijn projecten geef ik er de voorkeur aan om admin- en gebruikersauthenticatie gescheiden van elkaar te hebben; deze functie zal me helpen dit gemakkelijk te bereiken. Laat een voorbeeld zien config / auth.php:

// ... 'guards' => ['user' => ['driver' => 'sessie', 'provider' => 'gebruikers',], 'admin' => ['driver' => 'sessie', 'provider' => 'admin',], 'api' => ['driver' => 'token', 'provider' => 'gebruikers',],], // ... 'providers' => ['gebruikers '=> [' driver '=>' doctrine ',' model '=> App \ Entiteiten \ Users :: class,],' admin '=> [' driver '=>' doctrine ',' model '=> App \ Entiteiten \ Beheerder: klasse,],], 

Nu, wanneer u gebruikt Auth :: poging ([...]), Laravel zal de standaard bewaker noemen; dus als je een specifieke bewaker wilt gebruiken, bel dan gewoon met zijn naam, zoals Auth :: guard ( 'admin').

Voor authenticatie in uw routegroep met een specifieke bewaker, kunt u gewoon de naam van de bewaker noemen:

Route :: group (['middleware' => ['auth: admin']], function () // ... 

Soms wilt u dat gebruikers in plaats van een eenvoudige login in uw app een app toevoegen api_token aan het einde van hun queryreeks en gebruik die om hun verzoek te verifiëren. Met TokenGuard kunt u dit eenvoudig realiseren.

Als u token-authenticatie wilt gebruiken, moet u eerst een unieke 60 tekens toevoegen api_token veld in de databasetabel van het geselecteerde model (entiteit in doctrine). Nu kunt u eenvoudig gebruiken api bewaken in je app.

Impliciete route modelbinding

Een van de nieuwe kenmerken van Laravel 5.2 die erg praktisch is, is het binden aan het routemodel. U kunt het model aan uw route binden; hiervoor zouden we het handmatig aanmaken:

Route :: get ('user / id', function ($ id) $ user = Users :: findOrFail ($ id); // ...); 

Of misschien doet u zoiets als:

 // ... $ router-> model ('gebruiker', 'App \ Gebruiker'); // ... $ router-> get ('profile / user', functie (App \ Gebruiker $ gebruiker) //); 

Laravel 5.2 maakt het nog eenvoudiger. Geef gewoon een parameter door bij het afsluiten van de route, en deze zal het automatisch behandelen als een routemodelbinding:

Route :: get ('gebruiker / id', functie (App \ Gebruiker $ gebruiker) // ...); 

Het is nu eenvoudiger om het model aan uw route te binden.

Standaard gebruikt Laravel de id-kolom van het model. Maar als u verwacht dat het de toewijzing verandert, kunt u uw model als volgt wijzigen:

class Gebruiker breidt Model public function getRouteKeyName () return 'UserEmail';  

Weldadig implementeert de Verlichten \ contracten \ Routing \ UrlRoutable contract, zodat u het kunt overschrijven getRouteKeyName () methode. Het definieert welke kolom moet worden gebruikt om het op te zoeken via een URL.

Middleware groepen

Zoals u in het bovenstaande gedeelte kunt zien, hebben we een andere bewaker voor gebruiker en beheerder gemaakt. In dit geval, als u meerdere middleware wilt toewijzen aan een gebruikersroutegroep of uw beheerdersroutegroep, kunt u met Laravel 5.2 een snelkoppeling maken met een sleutelnaam.

Om de middleware-groep te definiëren, moet u de kernel.php in uw http-map wijzigen:

beschermd $ middlewareGroups = [// ... 'admin' => ['acl', 'web', 'auth',]]; 

En nu kunt u het eenvoudig gebruiken in uw routegroep.

Api Rate-Limiting Middleware

Als u de API van een andere toepassing zoals GitHub gebruikt voor aanvragen met basisverificatie of OAuth, kunt u maximaal 5000 verzoeken per uur doen. Deze beperking wordt snelheidsbeperking genoemd. Als u zoiets in uw app wilt hebben, kunt u de nieuwe functie van Laravel 5.2 gebruiken. Laravel 5.2 nieuw toegevoegd smoorklep middleware die snelheidsbeperkend zal zijn. U hebt bijvoorbeeld iets als:

Route :: group (['prefix' => 'api', 'middleware' => 'throttle'], function () Route :: get ('user', function () return Users :: all (); );); 

Standaard, smoorklep middleware staat 60 pogingen per minuut toe kernel.php:

// ... 'api' => ['gashendel: 60,1', 'auth: api',], 

U kunt dit naar wens wijzigen of zelfs aanpassen voor een specifieke router:

Route :: group (['prefix' => 'api', 'middleware' => 'throttle: 10,1000'], function () Route :: get ('user', function () keer terug Gebruikers :: allemaal(); ); ); 

Authenticatie Scaffold

Laravel 5.2 biedt een snelle manier om alles wat u nodig hebt voor authenticatie te gebruiken met behulp van dit commando:

php artisan make: auth 

Als u deze opdracht in uw nieuwe toepassing gebruikt, worden registratie- en aanmeldingsweergaven en routes voor alle verificaties gemaakt. Mijn routebestand ziet eruit als:

Route :: group (['middleware' => 'web'], function () Route :: auth (); Route :: get ('/ home', 'HomeController @ index');); 

De Route :: Auth () methode is een snelkoppeling naar het definiëren van de volgende routes:

// Verificatieroutes ... $ this-> get ('login', 'Auth \ AuthController @ showLoginForm'); $ this-> post ('login', 'Auth \ AuthController @ login'); $ this-> get ('logout', 'Auth \ AuthController @ logout'); // Registratieroutes ... $ this-> get ('register', 'Auth \ AuthController @ showRegistrationForm'); $ this-> post ('register', 'Auth \ AuthController @ register'); // Wachtwoord Routes opnieuw instellen ... $ this-> get ('wachtwoord / reset / token?', 'Auth \ PasswordController @ showResetForm'); $ this-> post ('wachtwoord / e-mail', 'Auth \ PasswordController @ sendResetLinkEmail'); $ this-> post ('wachtwoord / reset', 'Auth \ PasswordController @ reset'); 

EEN HomeController wordt ook gegenereerd, die verantwoordelijk is voor aanmeldingsverzoeken op het dashboard van uw toepassing. Maar u kunt deze controller aanpassen of verwijderen op basis van de behoeften van uw toepassing.

Form Array Validation

Een van de interessante dingen waarmee ik heb gewerkt is array-formuliergegevens in HTML. Als u iets tussen de vierkante haken plaatst, wordt de resulterende array associatief; anders zal het numeriek zijn:

De PHP print_r ($ _ POST) resultaat zal zijn:

array ('name' => array ('first' => "last '=>")) 

Dit zal u helpen om het proces van validatie en het werken met formulieren te vereenvoudigen. Laten we nu eens kijken naar de validatie voor onze gebruikersvelden in Laravel 5.2:

 publieke functie Validator () $ this-> validate (Request :: all (), ['name. *. first' => 'required | string', 'name. *. last' => 'string',]) ;  

Je hebt misschien gemerkt dat de vorm van de validatie is achternaam, met een asterisk in het midden, wat bijna aangeeft dat je de sleutel van een array of iets anders dat je nodig hebt zou kunnen toevoegen.

Conclusie

Laravel 5.2 was een kleine release waarmee je beter en sneller kunt werken. Zoals u wellicht opmerkt, zijn veel van deze functies ook gemakkelijk te leren.