Neue Funktionen in Laravel 5.2

In diesem Artikel werde ich mir die neuen Funktionen von Laravel 5.2 ansehen und sie einzeln beschreiben. Die neuen Funktionen sind unten aufgeführt:

  • implizite Routenmodellbindung
  • Formular-Array-Validierung
  • API-limitierende Middleware
  • Middleware-Gruppen
  • Authentifizierungsgerüst
  • mehrere Authentifizierungsschutztreiber

Mehrere Authentication Guard-Treiber

Diese Funktion hilft Ihnen, insbesondere wenn Sie Doctrine ORM Auth mit mehreren Providern benötigen. In meinen Projekten ziehe ich es vor, die Administrator- und Benutzerauthentifizierung voneinander zu trennen. Diese Funktion hilft mir dabei, dies leicht zu erreichen. Lass ein Beispiel sehen config / auth.php:

//… 'guards' => ['user' => ['driver' => 'session', 'provider' => 'users',], 'admin' => ['driver' => 'session', 'provider' => 'admin',], 'api' => ['driver' => 'token', 'provider' => 'users',],], //… 'provider' => ['users '=> [' driver '=>' doctrine ',' model '=> App \ Entities \ Users :: class,],' admin '=> [' driver '=>' doctrine ',' model '=> App \ Entities \ Admin :: class,],], 

Nun, wenn Sie verwenden Auth :: Versuch ([…]), Laravel ruft die Standardwache an. Wenn Sie also einen bestimmten Guard verwenden möchten, rufen Sie einfach den Namen an, z Auth :: guard ('admin').

Zur Authentifizierung in Ihrer Routengruppe bei einem bestimmten Guard können Sie einfach den Guard-Namen anrufen:

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

Anstelle eines einfachen Logins in Ihrer App möchten Sie manchmal, dass die Benutzer eine api_token bis zum Ende ihrer Abfragezeichenfolge und verwenden Sie diese zur Authentifizierung ihrer Anfrage. Der TokenGuard lässt Sie dies leicht erreichen.

Wenn Sie die Tokenauthentifizierung verwenden möchten, müssen Sie zunächst ein eindeutiges Zeichen mit 60 Zeichen hinzufügen api_token Feld in der Datenbanktabelle des ausgewählten Modells (Entität in der Lehre). Jetzt können Sie problemlos verwenden api Wache in Ihrer App.

Implizite Routenmodellbindung

Eine der praktischen Neuerungen von Laravel 5.2 ist die Bindung von Routenmodellen. Sie können das Modell an Ihre Route binden. vorher würden wir es manuell erstellen:

Route :: get ('user / id'), Funktion ($ id) $ user = Users :: findOrFail ($ id); //…); 

Oder Sie können so etwas tun:

 //… $ router-> model ('Benutzer', 'App \ Benutzer'); //… $ router-> get ('profile / user', Funktion (App \ User $ user) //); 

Laravel 5.2 macht es noch einfacher. Übergeben Sie einfach einen Parameter in der Routenschließung und er wird automatisch als Routenmodellbindung behandelt:

Route :: get ('user / id'), Funktion (App \ User $ user) //…); 

Jetzt ist es einfacher, das Modell an Ihre Route zu binden.

Standardmäßig verwendet Laravel die ID-Spalte des Modells. Wenn Sie jedoch erwarten, dass das Mapping geändert wird, können Sie Ihr Modell wie folgt ändern:

Klasse Benutzer erweitert Model öffentliche Funktion getRouteKeyName () return 'UserEmail';  

Eloquent implementiert die Illuminate \ Contracts \ Routing \ UrlRoutable Vertrag, so dass Sie die überschreiben können getRouteKeyName () Methode. Es definiert, in welcher Spalte nach einer URL gesucht werden soll.

Middleware-Gruppen

Wie Sie im obigen Abschnitt sehen können, haben wir einen anderen Schutz für Benutzer und Administrator eingerichtet. Wenn Sie einer Benutzer-Routengruppe oder Ihrer Admin-Routengruppe mehrere Middleware zuweisen möchten, können Sie in Laravel 5.2 eine Verknüpfung mit einem Tastennamen erstellen.

Um die Middleware-Gruppe zu definieren, sollten Sie die kernel.php in Ihrem http-Ordner ändern:

protected $ middlewareGroups = [//… 'admin' => ['acl', 'web', 'auth',]]; 

Und jetzt können Sie es problemlos in Ihrer Routengruppe verwenden.

Api Rate-Limiting-Middleware

Wenn Sie die API einer anderen Anwendung wie GitHub für Anforderungen mit Standardauthentifizierung oder OAuth verwenden, können Sie bis zu 5.000 Anforderungen pro Stunde erstellen. Diese Begrenzung wird als Ratenbegrenzung bezeichnet. Wenn Sie so etwas in Ihrer App haben möchten, können Sie die neue Funktion von Laravel 5.2 verwenden. Laravel 5.2 neu hinzugefügt drosseln Middleware, die die Ratenbegrenzung beherrscht. Zum Beispiel haben Sie vielleicht etwas wie:

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

Standardmäßig, drosseln Middleware erlaubt 60 Versuche pro Minute in Kernel.php:

//… 'api' => ['throttle: 60,1', 'auth: api',], 

Sie können ihn beliebig ändern oder sogar für einen bestimmten Router anpassen:

Route :: group (['prefix' => 'api', 'middleware' => 'drossel: 10,1000']), function () Route :: get ('user', function () return Users :: alles(); ); ); 

Authentifizierungsgerüst

Laravel 5.2 bietet eine schnelle Möglichkeit, alle Elemente, die Sie zur Authentifizierung benötigen, mithilfe des folgenden Befehls zu erstellen:

PHP Handwerker machen: Auth 

Wenn Sie diesen Befehl in Ihrer neuen Anwendung verwenden, werden Registrierungs- und Anmeldeansichten sowie Routen für alle Authentifizierungen erstellt. Meine Routendatei sieht folgendermaßen aus:

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

Das Route :: auth () method ist eine Abkürzung zum Definieren der folgenden Routen:

// Authentifizierungsrouten… $ this-> get ('login', 'Auth \ AuthController @ showLoginForm'); $ this-> post ('login', 'Auth \ AuthController @ login'); $ this-> get ('logout', 'Auth \ AuthController @ logout'); // Registrierungsrouten… $ this-> get ('register', 'Auth \ AuthController @ showRegistrationForm'); $ this-> post ('register', 'Auth \ AuthController @ register'); // Password Reset Routes… $ this-> get ('password / reset / token?', 'Auth \ PasswordController @ showResetForm'); $ this-> post ('password / email', 'Auth \ PasswordController @ sendResetLinkEmail'); $ this-> post ('password / reset', 'Auth \ PasswordController @ reset'); 

EIN HomeController wird ebenfalls generiert, die für Anmeldeanforderungen an das Dashboard Ihrer Anwendung verantwortlich ist. Sie können diesen Controller jedoch an die Anforderungen Ihrer Anwendung anpassen oder entfernen.

Formular-Array-Überprüfung

Eines der interessantesten Dinge, mit denen ich gearbeitet habe, sind Array-Formulardaten in HTML. Wenn Sie etwas in die eckigen Klammern setzen, wird das resultierende Array assoziativ. Andernfalls wird es numerisch sein:

Das PHP print_r ($ _ POST) Ergebnis wird sein:

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

Dies hilft Ihnen, den Validierungsprozess und die Arbeit mit Formularen zu vereinfachen. Nun sehen wir die Validierung unserer Benutzerfelder in Laravel 5.2:

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

Möglicherweise haben Sie festgestellt, dass die Validierung die Form hat name. *. last, mit einem Sternchen in der Mitte, was beinahe bedeutet, dass Sie den Schlüssel eines Arrays oder etwas anderes hinzufügen könnten, das Sie benötigen.

Fazit

Laravel 5.2 war eine kleine Version, mit der Sie besser und schneller arbeiten können. Wie Sie vielleicht feststellen werden, sind viele dieser Funktionen auch leicht zu erlernen.