Dans cet article, je vais examiner les nouvelles fonctionnalités de Laravel 5.2 et les décrire une par une. Les nouvelles fonctionnalités sont énumérées ci-dessous:
Cette fonctionnalité vous aidera, en particulier lorsque vous avez besoin d'une authentification Doctrine ORM avec plusieurs fournisseurs. Dans mes projets, je préfère que les authentifications d'administrateur et d'utilisateur soient distinctes. cette fonctionnalité m'aidera à y parvenir facilement. Voyons un exemple config / auth.php
:
//… 'gardes' => ['utilisateur' => ['driver' => 'session', 'fournisseur' => 'utilisateurs',], 'admin' => ['driver' => 'session', 'provider' => 'admin',], 'api' => ['driver' => 'token', 'provider' => 'utilisateurs',],], //… 'providers' => ['utilisateurs '=> [' driver '=>' doctrine ',' model '=> App \ Entités \ Utilisateurs :: classe,],' admin '=> [' driver '=>' doctrine ',' model '=> App \ Entities \ Admin :: class,],],
Maintenant, quand vous utilisez Auth :: tentative ([…])
, Laravel appellera le garde par défaut; donc si vous voulez utiliser une garde spécifique, appelez simplement avec son nom, tel que Auth :: guard ('admin')
.
Pour l'authentification dans votre groupe de routes avec une garde spécifique, vous pouvez simplement appeler le nom de la garde:
Route :: group (['middleware' => ['auth: admin']]], function () //…
Parfois, plutôt que de vous connecter simplement dans votre application, vous souhaitez que les utilisateurs ajoutent une api_token
à la fin de leur chaîne de requête et l'utiliser pour authentifier leur demande. TokenGuard vous permettra de réaliser cela facilement.
Si vous souhaitez utiliser l'authentification par jeton, vous devez tout d'abord ajouter un nom unique de 60 caractères. api_token
champ dans la table de base de données du modèle sélectionné (entité dans la doctrine). Maintenant, vous pouvez facilement utiliser api
garde dans ton application.
L'une des nouvelles fonctionnalités très pratiques de Laravel 5.2 est la liaison de modèle d'itinéraire. Vous pouvez lier le modèle à votre itinéraire. avant cela, nous le créerions manuellement:
Route :: get ('utilisateur / id', fonction ($ id) $ utilisateur = utilisateurs :: findOrFail ($ id); //…);
Ou vous pouvez faire quelque chose comme:
//… $ router-> model ('user', 'App \ User'); //… $ routeur-> get ('profil / utilisateur', fonction (App \ Utilisateur $ utilisateur) //);
Laravel 5.2 le rend encore plus facile. Il suffit de passer un paramètre dans la fermeture de la route, qui le traitera automatiquement comme une liaison de modèle de route:
Route :: get ('utilisateur / id', fonction (App \ Utilisateur $ utilisateur) //…);
Maintenant, il est plus facile de lier le modèle à votre itinéraire.
Par défaut, Laravel utilise la colonne id du modèle. Mais si vous vous attendez à ce qu'il modifie le mappage, vous pouvez modifier votre modèle comme suit:
La classe utilisateur étend le modèle fonction publique getRouteKeyName () return 'UserEmail';
Eloquent implémente le Illuminate \ Contracts \ Routing \ UrlRoutable
contrat, de sorte que vous pouvez outrepasser la getRouteKeyName ()
méthode. Il définit quelle colonne doit être utilisée pour la rechercher à partir d'une URL.
Comme vous pouvez le voir dans la section ci-dessus, nous avons créé une protection différente pour l'utilisateur et l'administrateur. Dans ce cas, si vous souhaitez affecter plusieurs middleware à un groupe de routes utilisateur ou à votre groupe de routes admin, Laravel 5.2 vous permet de créer un raccourci avec un nom de clé..
Afin de définir le groupe de middleware, vous devez modifier le fichier kernel.php dans votre dossier http:
protected $ middlewareGroups = [//… 'admin' => ['acl', 'web', 'auth',]];
Et maintenant, vous pouvez facilement l'utiliser dans votre groupe de routes.
Si vous utilisez l'API d'une autre application telle que GitHub, vous pouvez effectuer jusqu'à 5 000 requêtes par heure pour les requêtes utilisant l'authentification de base ou OAuth. Cette limitation est appelée limitation du débit. Si vous voulez avoir quelque chose comme ça dans votre application, vous pouvez utiliser la nouvelle fonctionnalité de Laravel 5.2. Laravel 5.2 ajouté nouveau étrangler
middleware qui gérera la limitation du débit. Par exemple, vous pouvez avoir quelque chose comme:
Route :: group (['prefix' => 'api', 'middleware' => 'papillon'], function () Route :: get ('utilisateur', function () return Users :: all (); ););
Par défaut, étrangler
middleware permet 60 tentatives par minute en kernel.php
:
//… 'api' => ['accélérateur: 60,1', 'auth: api',],
Vous pouvez le changer à votre guise ou même le personnaliser pour un routeur spécifique:
Route :: group (['prefix' => 'api', 'middleware' => 'papillon: 10,1000'], function () Route :: get ('utilisateur', function () retour Utilisateurs :: tout(); ); );
Laravel 5.2 offre un moyen rapide d'échafauder tout ce dont vous avez besoin pour l'authentification en utilisant cette commande:
php artisan font: auth
L'utilisation de cette commande dans votre nouvelle application créera des vues d'enregistrement et de connexion, ainsi que des itinéraires pour toutes les authentifications. Mon fichier de route ressemble à:
Route :: group (['middleware' => 'web'], function () Route :: auth (); Route :: get ('/ home', 'HomeController @ index'););
le Route :: auth ()
La méthode est un raccourci pour définir les itinéraires suivants:
// Routes d'authentification… $ this-> get ('login', 'Auth \ AuthController @ showLoginForm'); $ this-> post ('login', 'Auth \ AuthController @ login'); $ this-> get ('logout', 'Auth \ AuthController @ logout'); // Routes d'enregistrement… $ this-> get ('register', 'Auth \ AuthController @ showRegistrationForm'); $ this-> post ('register', 'Auth \ AuthController @ register'); // Mot de passe de réinitialisation des routes… $ this-> get ('password / reset / token?', 'Auth \ PasswordController @ showResetForm'); $ this-> post ('password / email', 'Auth \ PasswordController @ sendResetLinkEmail'); $ this-> post ('password / reset', 'Auth \ PasswordController @ reset');
UNE AccueilContrôleur
sera également généré, responsable des demandes de connexion au tableau de bord de votre application. Mais vous pouvez personnaliser ou supprimer ce contrôleur en fonction des besoins de votre application..
Une des choses intéressantes avec laquelle j'ai travaillé est les données sous forme de tableau en HTML. Si vous placez quelque chose entre les crochets, le tableau résultant devient associatif; sinon, ce sera numérique:
Le PHP print_r ($ _ POST)
le résultat sera:
array ('name' => array ('first' => "last '=>"))
Cela vous aidera à simplifier le processus de validation et de travail avec les formulaires. Voyons maintenant la validation de nos champs utilisateur dans Laravel 5.2:
fonction publique Validator () $ this-> validate (Request :: all (), ['name. *. first' => 'required | string', 'name. *. last' => 'string',]) ;
Vous avez peut-être remarqué que la forme de la validation est dernier nom
, avec un astérisque au milieu, ce qui indique presque que vous pouvez ajouter la clé d'un tableau ou tout autre élément nécessaire.
Laravel 5.2 était une petite version qui pourrait vous permettre de travailler mieux et plus rapidement. Comme vous pouvez le constater, nombre de ces fonctionnalités sont également faciles à apprendre..