Nya funktioner i Laravel 5.2

I den här artikeln ska jag titta på de nya funktionerna i Laravel 5.2 och beskriva dem en efter en. De nya funktionerna listas nedan:

  • implicit vägmodellbindning
  • form array validering
  • API-hastighetsbegränsande middleware
  • middleware-grupper
  • autentiseringsstället
  • flera autentiseringsvakthanterare

Flera autentiseringsbevakningsdrivrutiner

Denna funktion kommer att hjälpa dig, speciellt när du behöver ha Lärande ORM Auth med flera leverantörer. I mina projekt föredrar jag att ha administratör och användarautentisering separat från varandra; den här funktionen hjälper mig att uppnå detta enkelt. Låt se ett exempel config / auth.php:

// 'guards' => ['user' => ['driver' => 'session', 'provider' => 'användare',], 'admin' => ['driver' => 'session' 'provider' => 'admin',], 'api' => ['drivrutin' => 'token', 'provider' => 'användare',],], // ... 'providers' => '=> [' driver '=>' doktrin ',' modell '=> App \ Entities \ Användare :: klass,],' admin '=> [' drivrutin '=>' doktrin ',' modell '=> App \ Entiteter \ Admin :: klass,],], 

Nu när du använder Auth :: försök ([...]), Laravel kommer att ringa standardvakt; så om du vill använda ett visst skydd, bara ring med sitt namn, till exempel Auth :: vakt ( 'admin').

För autentisering i din färdgrupp med ett visst skydd kan du bara ringa vaktnamnet:

Rutt :: grupp (['middleware' => ['auth: admin']], funktion () // ... 

Ibland, snarare än en enkel inloggning i din app önskar du att användare ska lägga till en api_token till slutet av deras fråge sträng och använd det för att verifiera sin begäran. TokenGuard låter dig nå detta enkelt.

Om du vill använda token-autentisering måste du först och främst lägga till en unik 60-karaktär api_token fält i databas tabellen för den valda modellen (enhet i doktrinen). Nu kan du enkelt använda api bevakning i din app.

Implicit vägmodellbindning

En av de nya funktionerna i Laravel 5.2 som är mycket praktisk är vägmodellbindning. Du kan binda modellen till din rutt; före detta skulle vi skapa det manuellt:

Rutt :: get ('user / id', funktion ($ id) $ user = Användare :: findOrFail ($ id); // ...); 

Eller så kan du göra något som:

 // ... $ router-> modell ('användare', 'App \ User'); // ... $ router-> get ('profile / user', funktion (App \ User $ användare) //); 

Laravel 5.2 gör det ännu enklare. Bara skicka en parameter i rutens stängning, och det kommer automatiskt att behandla det som en rutemodell bindande:

Rutt :: get ('user / id', funktion (App \ User $ användare) // ...); 

Nu är det lättare att binda modellen till din rutt.

Som standard använder Laravel modellens id-kolumn. Men om du förväntar dig att det ändrar kartläggningen, kan du ändra din modell så här:

klass användaren utökar modell public function getRouteKeyName () returnera 'UserEmail';  

Eloquent implementerar Belysa \ Kontrakt \ Routing \ UrlRoutable kontrakt, så du kan åsidosätta getRouteKeyName () metod. Det definierar vilken kolumn som ska användas för att leta upp den från en URL.

Middleware Grupper

Som du kan se i ovanstående avsnitt har vi skapat ett annat skydd för användare och admin. Om du vill tilldela flera middleware till en användarvägsgrupp eller din administratörsväggrupp, kan Laravel 5.2 skapa en genväg med ett nyckelnamn.

För att definiera middleware-gruppen bör du ändra kernel.php i din http-mapp:

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

Och nu kan du enkelt använda den i din färdgrupp.

Api Rate-Limiting Middleware

Om du använder API för en annan applikation som GitHub, kan du göra upp till 5000 begäranden per timme för förfrågningar som använder grundläggande autentisering eller OAuth. Denna begränsning kallas hastighetsbegränsande. Om du vill ha något så här i din app kan du använda Laravel 5.2: s nya funktion. Laravel 5.2 läggs till nytt strypa middleware som hanterar hastighetsbegränsning. Du kanske till exempel har något liknande:

Rutt :: grupp (['prefix' => 'api', 'middleware' => 'gasspjäll'], funktion () Rutt :: get ('användare', funktion () returnera Användare :: alla );); 

Som standard, strypa middleware tillåter 60 försök per minut kernel.php:

// ... 'api' => ['gasspjäll: 60,1', 'auth: api',], 

Du kan ändra det som du vill eller ens anpassa det till en viss router:

Rutt :: grupp (['prefix' => 'api', 'middleware' => 'gaspump: 10,1000'], funktion () Rutt :: get ('användare', funktion Allt(); ); ); 

Authentication Scaffold

Laravel 5.2 ger dig ett snabbt sätt att bygga upp allt du behöver för autentisering med det här kommandot:

php artisan make: auth 

Genom att använda det här kommandot i din nya applikation kommer du att skapa registrerings- och inloggningsvyer samt rutter för alla autentiseringar. Min rutefil ser ut som:

Rutt :: grupp (['middleware' => 'web'], funktion () Rutt :: auth (); Rutt :: få ('/ hem', 'HomeController @ index');); 

De Rutt :: auth () Metoden är en genväg för att definiera följande vägar:

// Autentiseringsrutter ... $ this-> get ('login', 'Auth \ AuthController @ showLoginForm'); $ this-> post ("inloggning", "Auth \ AuthController @ login"); $ this-> get ('logout', 'Auth \ AuthController @ logout'); // Registreringsrutor ... $ this-> get ('register', 'Auth \ AuthController @ showRegistrationForm'); $ this-> post ("register", "Auth \ AuthController @ register"); // Password Reset Routes ... $ this-> get ('lösenord / återställning / token?', 'Auth \ PasswordController @ showResetForm'); $ this-> post ("lösenord / e-post", "Auth \ PasswordController @ sendResetLinkEmail"); $ this-> post ("password / reset", "Auth \ PasswordController @ reset"); 

en HomeController kommer också att genereras, vilket är ansvarigt för inloggningsförfrågningar till din applikations instrumentpanel. Men du kan anpassa eller ta bort den här kontrollenheten baserat på behoven hos din ansökan.

Form Array Validation

En av de intressanta sakerna jag har arbetat med är matrisdata i HTML. Om du placerar något inom ruta parentes blir den resulterande raden associativ; annars kommer det att vara numeriskt:

PHP print_r ($ _ POST) resultatet blir:

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

Detta kommer att hjälpa dig att förenkla processen för validering och arbeta med formulär. Låt oss nu se validering för våra användarfält i Laravel 5.2:

 allmän funktion Validator () $ this-> validera (Begär: alla (), ['namn. *. först' => 'krävs | sträng', 'namn. *. sista' => 'sträng',]) ;  

Du kanske har märkt att formen på valideringen är namn. *. sist, med en asterisk i mitten, vilket nästan indikerar att du kan lägga till nyckeln till en array eller något annat du behöver.

Slutsats

Laravel 5.2 var en liten release som kan låta dig arbeta bättre och snabbare. Som du kanske märker är många av dessa funktioner också lätta att lära.