Utilisation de la façade d’authentification de Laravel 5

L'authentification fait partie de presque toutes les applications Web avec lesquelles vous travaillez. C'est vraiment ennuyeux de répéter tout le code standard dans chaque projet. La bonne nouvelle est que Laravel 5 vous débarrasse de cet ennui en proposant une façade d'authentification prête à l'emploi.. 

Tout ce que vous avez à faire est de configurer et de personnaliser le fournisseur de services d'authentification en fonction des besoins de votre projet. Dans ce conseil, je vais vous montrer exactement comment faire cela..

À la recherche d'un raccourci?

Si vous souhaitez une solution prête à l'emploi et testée, essayez Vanguard - Connexion avancée avec PHP et gestion des utilisateurs sur Envato Market. C'est une application PHP, écrite en Laravel 5.2, qui permet aux propriétaires de sites Web d'ajouter et d'activer rapidement l'authentification, l'autorisation et la gestion des utilisateurs sur leur site Web.. 

Vanguard - Connexion avancée à PHP et gestion des utilisateurs sur Envato Market

Mise en place de l'environnement

Je suppose que vous démarrez avec une nouvelle installation de Laravel 5, mais vous pouvez ignorer l’une de ces étapes si vous les avez déjà effectuées. Tout d’abord, vous allez définir des variables d’environnement dans le .env déposer à la racine de votre projet. Celles-ci concernent essentiellement la configuration de la base de données.

APP_ENV = local APP_DEBUG = true APP_KEY = 8wfDvMTvfXWHuYE483uXF11fvX8Qi8gC DB_HOST = localhost DB_DATABASE = laravel_5_authentification DB_USERNAME = root DB_PASSWORD = root CACHE_DVER plus.

Remarquez le APP_ENV,  DB_HOST,  DB_DATABASE,  DB_USERNAME, et  DB_PASSWORD variables. le APP_ENV variable indique à Laravel dans quel environnement nous souhaitons exécuter notre application Web. Les autres noms de variables de la base de données sont assez évidents. 

C'est tout ce que vous devez faire pour configurer la connexion à la base de données. Mais comment Laravel utilise-t-il ces variables? Examinons le config / database.php fichier. Vous remarquerez l'utilisation du env () une fonction. Par exemple, env ('DB_HOST', 'localhost'). Laravel 5 utilise cette fonction pour capturer les variables du $ _ENV et $ _SERVER tableaux globaux, qui sont automatiquement renseignés avec les variables que vous définissez dans le .env fichier.

Configuration des migrations

Exécuter php artisan migrate: installez --env = local dans votre terminal à la racine de votre projet pour installer les migrations localement. Notez également qu’il existe deux migrations déjà définies dans la base de données / migrations dossier. En utilisant ces migrations, Laravel 5 crée un utilisateurs et un mot_de_passe table, permettant à l’authentification standard par défaut de fonctionner. Je vais créer une troisième migration pour modifier le utilisateurs tableau juste pour vous montrer comment personnaliser la configuration d'authentification par défaut.

Exécuter php artisanat: migration alter_users_table_remove_name_add_first_name_last_name dans le terminal pour créer une troisième migration.

dropColumn ('nom'); $ table-> chaîne de caractères ('prénom_nom', 50) -> après ('id'); $ table-> string ('dernier nom', 50) -> après ('prenom'); );  / ** * Inverser les migrations. * * @retour void * / public function down () Schema :: table ('utilisateurs', fonction ($ table) $ table-> dropColumn ('nom_nom' '); $ table-> dropColumn (' prénom_nom ''); $ table-> string ('name') -> after ('id');); 

Comme vous pouvez le constater, vous avez supprimé le champ du nom et ajouté deux autres champs. Prénom et nom de famille avec une longueur maximale de 50 caractères. Vous avez également ajouté le code qui annule ces modifications dans la base de données..

Exécuter php artisan migrer dans le terminal. Si les migrations ont réussi, vous devriez pouvoir voir les deux tables de votre base de données avec les champs que vous avez définis..

Configuration du service registraire

Vous allez configurer le service Registrar pour ajouter votre nouveau utilisateurs champs de table. 

Éditer le fichier app / Services / Registrar.php.

 'required | min: 3 | max: 50', 'last_name' => 'required | min: 3 | max: 50', 'email' => 'obligatoire | email | max: 255 | unique: utilisateurs', 'mot de passe '=>' requis | confirmé | min: 6 ',]);  / ** * Créez une nouvelle instance d'utilisateur après un enregistrement valide. * * @param array $ data * @return Utilisateur * / fonction publique create (array $ data) return User :: create (['first_name' => $ data ['first_name'], 'last_name' => $ data [ 'nom de famille'], 'email' => $ data ['email'], 'password' => bcrypt ($ data ['password']),]); 

le validateur function valide les données transmises à partir du formulaire d’enregistrement de l’utilisateur. Vous avez supprimé la valeur par défaut prénom champ et ajouté le Prénom et nom de famille champs d'une longueur minimale de trois caractères et d'une longueur maximale de 50 caractères pour les deux. le créer fonction ajoute l'utilisateur enregistré à la utilisateurs table dans la base de données, il vous suffit donc d'inclure le Prénom et nom de famille champs à elle.

Mise à jour du modèle d'utilisateur

Vous devrez également mettre à jour le modèle d’utilisateur pour inclure le Prénom et nom de famille des champs. 

Éditer le fichier app / User.php.

le $ remplissable tableau spécifie quels champs du modèle sont ouverts à modification. En règle générale, vous n'incluez pas de champs générés automatiquement dans ce tableau ni de champs ne nécessitant pas de saisie de la part de l'utilisateur, comme le hachage pour un jeton Remember Me. Tout ce que vous avez fait est de mettre à jour le $ remplissable tableau pour permettre la Prénom et nom de famille être assignable en masse.

Mise à jour de la vue

Enfin, il vous suffit de mettre à jour les vues frontales pour inclure la Prénom et nom de famille des champs. Tout d'abord, vous mettrez à jour le formulaire d'inscription. 

Éditer le fichier resources / views / auth / register.blade.php.

@extends ('app') @section ('contenu') 
registre
@if (count ($ errors)> 0)
Oups! Il y avait quelques problèmes avec votre entrée.

    @foreach ($ errors-> all () as $ error)
  • $ error
  • @endforeach
@fin si
@endsection

Vous avez ajouté le Prénom et nom de famille champs du formulaire d'inscription. Vous devez également modifier la présentation par défaut de l'application à ressources / views / app.blade.php afficher le nom de l'utilisateur connecté dans le menu de navigation.

      Laravel 5: Utilisation de la façade d'authentification            
@yield ('content')

Sécuriser vos itinéraires

Pour sécuriser vos itinéraires et permettre aux seuls utilisateurs connectés de pouvoir y accéder, vous devez utiliser le middleware auth fourni par Laravel. Le middleware auth peut être trouvé à app \ Http \ Middleware \ Authenticate.php

Voici quelques exemples d'utilisation pour protéger vos itinéraires..

// Fermeture de route Route :: get ('', [' middleware '=>' auth ', function () // si l'utilisateur n'est pas connecté // il sera redirigé vers la page de connexion // et ce code ne sera pas exécuté]); // action du contrôleur Route :: get ('', [' middleware '=>' auth ',' utilise '=>'@']); // au sein d'une classe de contrôleur YourController étend Controller public function __construct () $ this-> middleware (''); $ this-> middleware ('', [' seulement '=> ['']]); $ this-> middleware ('', [' except '=> ['']]); 

Modification des itinéraires d'authentification par défaut

Vous pouvez exécuter php artisan route: liste dans le terminal pour vérifier les itinéraires par défaut utilisés par la façade d’authentification. Vous pouvez accéder à ces routes pour tester votre code d'authentification. Voici quelques exemples sur la façon de modifier ces itinéraires.

Éditer le fichier app / Http / routes.php.

// Exemple 1 // URL de connexion http://www.example.com/account/login // URL de déconnexion http://www.example.com/account/logout // url d'enregistrement http: //www.example. com / account / register Route :: controllers (['account' => 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Exemple 2 // URL de connexion http://www.example.com/login // URL de déconnexion http://www.example.com/logout // URL d'enregistrement http://www.example.com/register Route :: controllers (["=> 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Exemple 3 // redéfinir tous les itinéraires Route :: get ('exemple / register', 'Auth \ AuthController @ getRegister '); Route :: post (' exemple / registre ',' Auth \ AuthController @ postRegister '); Route :: get (' exemple / login ',' Auth \ AuthController @ getLogin '); Route :: post ('exemple / login', 'Auth \ AuthController @ postLogin'); Route :: get ('exemple / logout', 'Auth \ AuthController @ getLogout'); Route :: get ('exemple / email', 'Auth \ PasswordController @ getEmail '); Route :: post (' exemple / email ',' Auth \ PasswordController @ postEmail '); Route :: get (' exemple / reset / code ',' Auth \ PasswordController @ getReset ') ; Route :: post ('exemple / reset', 'Auth \ PasswordController @ postReset');

Pensez également à appeler les URI de manière dynamique dans vos vues et modèles de courrier électronique à l'aide des helpers de Laravel. Vous pouvez voir comment faire cela dans le référentiel GitHub de cette astuce.

Dernières pensées

La fonction de réinitialisation du mot de passe envoie le lien de réinitialisation du mot de passe à la messagerie de l'utilisateur. Assurez-vous donc que la configuration de la messagerie est configurée dans votre projet Laravel. Le modèle de vue pour l'e-mail de réinitialisation du mot de passe est à ressources / vues / courriels / mot de passe.blade.php. Vous pouvez également configurer quelques autres options de base dans config / auth.php fichier.

J'espère que vous avez trouvé cette astuce facile à suivre. En attendant mon prochain morceau Tuts +, codage heureux!

Soit dit en passant, si vous avez besoin d'aide supplémentaire pour résoudre les bogues ou effectuer des personnalisations avec lesquelles vous n'êtes pas à l'aise, contactez l'un des fournisseurs de services PHP sur Envato Studio. Ils peuvent vous aider avec une large gamme de problèmes rapidement et de manière fiable, de sorte qu'avec un petit investissement d'argent, vous puissiez gagner beaucoup de temps!

Fournisseurs de services PHP sur Envato Studio