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..
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 MarketJe 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.
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..
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.
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 laPrénom
etnom 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
etnom 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')@endsectionregistre@if (count ($ errors)> 0)Oups! Il y avait quelques problèmes avec votre entrée.@fin si
@foreach ($ errors-> all () as $ error)
- $ error
@endforeachVous avez ajouté le
Prénom
etnom 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 dansconfig / 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