{"id":67803,"date":"2023-03-30T14:41:31","date_gmt":"2023-03-30T13:41:31","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=67803&#038;preview=true&#038;preview_id=67803"},"modified":"2025-09-08T15:09:36","modified_gmt":"2025-09-08T14:09:36","slug":"guide-authentification-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/","title":{"rendered":"Un guide complet de l&rsquo;authentification Laravel"},"content":{"rendered":"<p>L&rsquo;authentification est l&rsquo;une des fonctions les plus critiques et les plus essentielles des applications web. Les frameworks web tels que Laravel offrent de nombreuses possibilit\u00e9s d&rsquo;authentification pour les utilisateurs.<\/p>\n<p>Vous pouvez mettre en \u0153uvre les fonctions d&rsquo;authentification de Laravel rapidement et en toute s\u00e9curit\u00e9. Cependant, une mauvaise impl\u00e9mentation de ces fonctions d&rsquo;authentification peut s&rsquo;av\u00e9rer risqu\u00e9e, car des parties malveillantes peuvent les exploiter.<\/p>\n<p>Ce guide vous apprendra tout ce que vous devez savoir pour commencer \u00e0 utiliser les m\u00e9thodes d&rsquo;authentification Laravel de votre choix.<\/p>\n<p>Poursuivez votre lecture !<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Introduction \u00e0 l&rsquo;authentification Laravel<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-laravel\/\">Laravel<\/a> introduit des modules compos\u00e9s de \u00ab guards (ou gardes) \u00bb et de \u00ab <a href=\"https:\/\/laravel.com\/docs\/9.x\/providers\">providers<\/a> (ou fournisseurs) \u00bb.Les guards d\u00e9finissent l&rsquo;authentification de l&rsquo;utilisateur pour chaque requ\u00eate, et les providers d\u00e9finissent la r\u00e9cup\u00e9ration de l&rsquo;utilisateur \u00e0 partir d&rsquo;un <a href=\"https:\/\/kinsta.com\/fr\/blog\/stockage-persistant\/\">stockage persistant<\/a> (par exemple, une base de donn\u00e9es <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-mysql\/\">MySQL<\/a>).<\/p>\n<p>Nous d\u00e9finissons nos param\u00e8tres d&rsquo;authentification dans un fichier nomm\u00e9 <code>config\/auth.php<\/code>. Il comprend plusieurs options permettant d&rsquo;ajuster et de modifier le comportement de Laravel en mati\u00e8re d&rsquo;authentification.<\/p>\n<p>Tout d&rsquo;abord, vous devez d\u00e9finir les param\u00e8tres d&rsquo;authentification par d\u00e9faut. Cette option contr\u00f4le les options par d\u00e9faut d&rsquo;authentification \u00ab guard \u00bb et de r\u00e9initialisation du mot de passe de votre application. Vous pouvez modifier ces valeurs par d\u00e9faut si n\u00e9cessaire, mais elles constituent un bon point de d\u00e9part pour la plupart des applications.<\/p>\n<p>Ensuite, vous d\u00e9finissez les guards d&rsquo;authentification pour votre application. Ici, notre configuration par d\u00e9faut utilise le stockage de session et le fournisseur d&rsquo;utilisateurs Eloquent. Tous les pilotes d&rsquo;authentification ont un fournisseur d&rsquo;utilisateurs.<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nreturn [\n    \/* \n    Defining Authentication Defaults  \n    *\/\n    \n    'defaults' =&gt; [\n        'guard' =&gt; 'web', \n        'passwords' =&gt; 'users',\n    ],\n    \n    \/*\n    Defining Authentication Guards\n   \n    Supported: \"session\"\n    *\/\n\n    'guards' =&gt; [\n        'web' =&gt; [\n            'driver' =&gt; 'session',\n            'provider' =&gt; 'users',\n        ],\n     ],\n    \n    \/*\n    Defining User Providers\n\n    Supported: \"database\", \"eloquent\"\n    *\/\n\n    'providers' =&gt; [\n        'users' =&gt; [\n             'driver' =&gt; 'eloquent',\n             'model' =&gt; App\\Models\\User::class,\n        ], \n\n        \/\/ 'users' =&gt; [\n        \/\/     'driver' =&gt; 'database',\n        \/\/     'table' =&gt; 'users',\n        \/\/ ],\n    ],\n\n    \/*\n    Defining Password Resetting\n    *\/\n\n    'passwords' =&gt; [\n        'users' =&gt; [\n            'provider' =&gt; 'users',\n            'table' =&gt; 'password_resets',\n            'expire' =&gt; 60,\n            'throttle' =&gt; 60,\n         ],\n     ],\n\n     \/*\n     Defining Password Confirmation Timeout\n     *\/\n\n    'password_timeout' =&gt; 10800,\n];<\/code><\/pre>\n<p>Plus loin, nous nous assurerons que tous les pilotes d&rsquo;authentification disposent d&rsquo;un fournisseur d&rsquo;utilisateurs. Celui-ci d\u00e9finit la mani\u00e8re dont les utilisateurs sont extraits de votre base de donn\u00e9es ou d&rsquo;autres m\u00e9canismes de stockage afin de conserver les donn\u00e9es de l&rsquo;utilisateur. Vous pouvez configurer plusieurs sources repr\u00e9sentant chaque mod\u00e8le ou table si vous avez plusieurs tables ou mod\u00e8les d&rsquo;utilisateurs. Ces sources peuvent \u00eatre affect\u00e9es \u00e0 toutes les gardes d&rsquo;authentification suppl\u00e9mentaires que vous avez d\u00e9finies.<\/p>\n<p>Les utilisateurs peuvent \u00e9galement souhaiter r\u00e9initialiser leur mot de passe. Pour cela, vous pouvez sp\u00e9cifier plusieurs configurations de r\u00e9initialisation de mot de passe si vous avez plusieurs tables ou mod\u00e8les d&rsquo;utilisateurs dans l&rsquo;application et que vous souhaitez des param\u00e8tres distincts en fonction des types d&rsquo;utilisateurs sp\u00e9cifiques. Le d\u00e9lai d&rsquo;expiration correspond au nombre de minutes pendant lesquelles chaque jeton de r\u00e9initialisation sera valide. Cette fonction de s\u00e9curit\u00e9 permet aux jetons d&rsquo;avoir une dur\u00e9e de vie courte, de sorte qu&rsquo;ils ont moins de temps pour \u00eatre devin\u00e9s. Vous pouvez modifier ce param\u00e8tre selon vos besoins.<\/p>\n<p>Enfin, vous devez d\u00e9finir le d\u00e9lai d&rsquo;attente avant qu&rsquo;une confirmation de mot de passe ne se termine et que l&rsquo;utilisateur soit invit\u00e9 \u00e0 saisir \u00e0 nouveau son mot de passe dans l&rsquo;\u00e9cran de confirmation. Par d\u00e9faut, le d\u00e9lai d&rsquo;attente est de trois heures.<\/p>\n<h2>Types de m\u00e9thodes d&rsquo;authentification Laravel<\/h2>\n<p>Il n&rsquo;existe pas de m\u00e9thode d&rsquo;authentification parfaite pour tous les sc\u00e9narios, mais le fait de les conna\u00eetre vous aidera \u00e0 prendre de meilleures d\u00e9cisions. C&rsquo;est ainsi que Laravel \u00e9volue avec les nouvelles fonctionnalit\u00e9s de <a href=\"https:\/\/kinsta.com\/fr\/blog\/laravel-9\/\">Laravel 9<\/a>. Cela rend notre travail de d\u00e9veloppeur beaucoup plus facile lorsque nous changeons de mode d&rsquo;authentification.<\/p>\n<h3>Authentification par mot de passe<\/h3>\n<p>Cette m\u00e9thode rudimentaire d&rsquo;authentification d&rsquo;un utilisateur est encore utilis\u00e9e par des milliers d&rsquo;organisations, mais compte tenu du d\u00e9veloppement actuel, elle est clairement en train de devenir obsol\u00e8te.<\/p>\n<p>Les fournisseurs doivent mettre en \u0153uvre des mots de passe complexes tout en garantissant une friction minimale pour l&rsquo;utilisateur final.<\/p>\n<p>Le fonctionnement est assez simple : l&rsquo;utilisateur saisit son nom et son mot de passe, et si la base de donn\u00e9es contient une correspondance entre ces deux \u00e9l\u00e9ments, le serveur d\u00e9cide d&rsquo;authentifier la demande et de laisser l&rsquo;utilisateur acc\u00e9der aux ressources pendant une dur\u00e9e pr\u00e9d\u00e9finie.<\/p>\n<h3>Authentification par jeton<\/h3>\n<p>Cette m\u00e9thode est utilis\u00e9e lorsque l&rsquo;utilisateur re\u00e7oit un jeton unique apr\u00e8s v\u00e9rification.<\/p>\n<p>Gr\u00e2ce \u00e0 ce jeton, l&rsquo;utilisateur peut acc\u00e9der aux ressources pertinentes. Le privil\u00e8ge est actif jusqu&rsquo;\u00e0 l&rsquo;expiration du jeton.<\/p>\n<p>Tant que le jeton est actif, l&rsquo;utilisateur n&rsquo;a pas besoin d&rsquo;utiliser de nom d&rsquo;utilisateur ou de mot de passe, mais lorsqu&rsquo;il r\u00e9cup\u00e8re un nouveau jeton, ces deux \u00e9l\u00e9ments sont n\u00e9cessaires.<\/p>\n<p>Les jetons sont aujourd&rsquo;hui largement utilis\u00e9s dans de nombreux sc\u00e9narios, car ce sont des entit\u00e9s sans \u00e9tat qui contiennent toutes les donn\u00e9es d&rsquo;authentification.<\/p>\n<p>Le fait de pouvoir s\u00e9parer la g\u00e9n\u00e9ration et la v\u00e9rification des jetons offre aux fournisseurs une grande flexibilit\u00e9.<\/p>\n<h3>Authentification multifactorielle<\/h3>\n<p>Comme son nom l&rsquo;indique, elle implique l&rsquo;utilisation d&rsquo;au moins deux facteurs d&rsquo;authentification, ce qui accro\u00eet la s\u00e9curit\u00e9 qu&rsquo;elle offre.<\/p>\n<p>Contrairement \u00e0 <a href=\"https:\/\/kinsta.com\/fr\/blog\/authentification-deux-facteurs-sur-wordpress\/\">l&rsquo;authentification \u00e0 deux facteurs<\/a> qui n&rsquo;implique que deux facteurs, cette m\u00e9thode peut impliquer deux, trois, quatre, et plus..<\/p>\n<p>La mise en \u0153uvre typique de cette m\u00e9thode implique l&rsquo;utilisation d&rsquo;un mot de passe, apr\u00e8s quoi l&rsquo;utilisateur re\u00e7oit un code de v\u00e9rification sur son smartphone. Les fournisseurs qui mettent en \u0153uvre cette m\u00e9thode doivent se m\u00e9fier des faux positifs et des pannes de r\u00e9seau, qui peuvent devenir de gros probl\u00e8mes lors d&rsquo;une mise \u00e0 l&rsquo;\u00e9chelle rapide.<\/p>\n<h2>Comment impl\u00e9menter l&rsquo;authentification Laravel<\/h2>\n<p>Cette section vous apprendra plusieurs fa\u00e7ons d&rsquo;authentifier les utilisateurs de votre application. Certaines biblioth\u00e8ques comme Jetstream, Breeze, et Socialite ont des <a href=\"https:\/\/kinsta.com\/fr\/blog\/tutoriels-laravel\/\">tutoriels gratuits<\/a> sur la fa\u00e7on de les utiliser.<\/p>\n<h3>Authentification manuelle<\/h3>\n<p>En commen\u00e7ant par l&rsquo;enregistrement des utilisateurs et la cr\u00e9ation des routes n\u00e9cessaires dans <code>routes\/web.php<\/code>.<\/p>\n<p>Nous allons cr\u00e9er deux routes, l&rsquo;une pour visualiser le formulaire et l&rsquo;autre pour s&rsquo;enregistrer :<\/p>\n<pre><code class=\"language-php\">use App\\Http\\Controllers\\Auth\\RegisterController;\nuse Illuminate\\Support\\Facades\\Route;\n\n\/*\nWeb Routes \n\nRegister web routes for your app's RouteServiceProvider \nin a group containing the \"web\" middleware\n*\/\n\nRoute::get('\/register', [RegisterController::class, 'create']);\nRoute::post('\/register', [RegisterController::class, 'store']);<\/code><\/pre>\n<p>Et nous cr\u00e9erons le contr\u00f4leur n\u00e9cessaire pour ces routes :<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller Auth\/RegisterController -r<\/code><\/pre>\n<p>Mettez maintenant le code \u00e0 jour comme suit :<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse illuminate\\Htpp\\Request;\n\nclass RegisterController extends Controller\n{\n    public function create()\n    {\n        return view('auth.register');\n    }\n\n    public function store(Request $request)\n    {\n    }\n}<\/code><\/pre>\n<p>Le contr\u00f4leur est maintenant vide et renvoie une vue \u00e0 enregistrer. Cr\u00e9ons cette vue dans <code>resources\/views\/auth<\/code> et appelons-la <code>register.blade.php<\/code>.<\/p>\n<figure style=\"width: 1968px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Laravel-Register-User.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Laravel-Register-User.png\" alt=\"Vue Laravel blade pour l'enregistrement des utilisateurs.\" width=\"1968\" height=\"1862\"><\/a><figcaption class=\"wp-caption-text\">Vue Laravel blade pour l&rsquo;enregistrement des utilisateurs.<\/figcaption><\/figure>\n<p>Maintenant que tout est en place, nous devrions visiter notre route <code>\/register<\/code> et voir le formulaire suivant :<\/p>\n<figure id=\"attachment_162747\" aria-describedby=\"caption-attachment-162747\" style=\"width: 960px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-162747 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/laravel-authentication-user-login-form.png\" alt=\"Formulaire d'inscription pour l'authentification manuelle.\" width=\"960\" height=\"264\"><figcaption id=\"caption-attachment-162747\" class=\"wp-caption-text\">Formulaire d&rsquo;inscription pour l&rsquo;authentification manuelle.<\/figcaption><\/figure>\n<p>Maintenant que nous pouvons afficher un formulaire que l&rsquo;utilisateur peut remplir et obtenir les donn\u00e9es correspondantes, nous devons r\u00e9cup\u00e9rer les donn\u00e9es de l&rsquo;utilisateur, les valider, puis les stocker dans la base de donn\u00e9es si tout va bien. Dans ce cas, vous devez utiliser une transaction de base de donn\u00e9es pour vous assurer que les donn\u00e9es que vous ins\u00e9rez sont compl\u00e8tes.<\/p>\n<p>Nous utiliserons la fonction de validation des requ\u00eates de Laravel pour nous assurer que les trois informations d&rsquo;identification sont n\u00e9cessaires. Nous devons nous assurer que l&rsquo;e-mail a un format e-mail et est unique dans la table <code>users<\/code> et que le mot de passe est confirm\u00e9 et a un minimum de 8 caract\u00e8res :<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\User;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Hash;\n\nclass RegisterController extends Controller\n{\n    public function store(Request $request)\n    {\n        \/* \n        Validation\n        *\/\n        $request-&gt;validate([\n            'name' =&gt; 'required',\n            'email' =&gt; 'required|email|unique:users',\n            'password' =&gt; 'required|confirmed|min:8',\n        ]);\n\n        \/*\n        Database Insert\n        *\/\n        $user = User::create([\n            'name' =&gt; $request-&gt;name,\n            'email' =&gt; $request-&gt;email,\n            'password' =&gt; Hash::make($request-&gt;password),\n        ]);\n\n        return back();\n    }\n\n    public function create()\n    {\n        return view('auth.register');\n    }\n}<\/code><\/pre>\n<p>Maintenant que notre entr\u00e9e est valid\u00e9e, tout ce qui va \u00e0 l&rsquo;encontre de notre validation va g\u00e9n\u00e9rer une erreur qui sera affich\u00e9e dans le formulaire :<\/p>\n<figure id=\"attachment_162751\" aria-describedby=\"caption-attachment-162751\" style=\"width: 960px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-162751 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/laravel-authentication-invalid-register-input.png\" alt=\"Exemple d'entr\u00e9e non valide pour l'enregistrement\" width=\"960\" height=\"168\"><figcaption id=\"caption-attachment-162751\" class=\"wp-caption-text\">Exemple d&rsquo;entr\u00e9e non valide pour l&rsquo;enregistrement<\/figcaption><\/figure>\n<p>En supposant que nous ayons cr\u00e9\u00e9 un compte d&rsquo;utilisateur dans la m\u00e9thode <code>store<\/code>, nous voulons \u00e9galement nous connecter \u00e0 l&rsquo;utilisateur. Nous pouvons le faire de deux mani\u00e8res. Nous pouvons le faire manuellement ou utiliser la <strong>fa\u00e7ade Auth<\/strong>.<\/p>\n<p>Une fois que l&rsquo;utilisateur s&rsquo;est connect\u00e9, nous ne devons pas le renvoyer \u00e0 l&rsquo;\u00e9cran d&rsquo;inscription, mais plut\u00f4t \u00e0 une nouvelle page, comme un tableau de bord ou une page d&rsquo;accueil. C&rsquo;est ce que nous allons faire ici :<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Providers\\RouteServiceProvider;\nuse Illuminate\\Foundation\\Auth\\User;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Illuminate\\Support\\Facades\\Hash;\n\nclass RegisterController extends Controller\n{\n    public function store(Request $request)\n    {\n        \/* \n        Validation\n        *\/\n        $request-&gt;validate([\n            'name' =&gt; 'required',\n            'email' =&gt; 'required|email|unique:users',\n            'password' =&gt; 'required|confirmed|min:8',\n        ]);\n\n        \/*\n        Database Insert\n        *\/\n        $user = User::create([\n            'name' =&gt; $request-&gt;name,\n            'email' =&gt; $request-&gt;email,\n            'password' =&gt; Hash::make($request-&gt;password),\n        ]);\n\n        Auth::login($user);\n\n        return redirect(RouteServiceProvider::HOME);\n    }\n\n    public function create()\n    {\n        return view('auth.register');\n    }\n}<\/code><\/pre>\n<p>Maintenant qu&rsquo;un utilisateur est enregistr\u00e9 et connect\u00e9 <code>-n<\/code>, nous devons nous assurer qu&rsquo;ils peuvent se d\u00e9connecter en toute s\u00e9curit\u00e9.<\/p>\n<p>Laravel sugg\u00e8re d&rsquo;invalider la session et de r\u00e9g\u00e9n\u00e9rer le jeton de s\u00e9curit\u00e9 apr\u00e8s une d\u00e9connexion. Et c&rsquo;est pr\u00e9cis\u00e9ment ce que nous allons faire. Nous commen\u00e7ons par cr\u00e9er une nouvelle route <code>\/logout<\/code> en utilisant la m\u00e9thode <code>destroy<\/code> du<strong> LogoutController <\/strong>:<\/p>\n<pre><code class=\"language-php\">use App\\Http\\Controllers\\Auth\\RegisterController;\nuse App\\Http\\Controllers\\Auth\\LogoutController;\nuse Illuminate\\Support\\Facades\\Route;\n\n\/*\nWeb Routes\n\nHere is where you can register web routes for your application. These\nroutes are loaded by the RrouteServiceProvider with a group which\ncontains the \"web\" middleware group. Now create something great!\n*\/\n\nRoute::get('\/register', [RegisterController::class, 'create']);\n\nRoute::post('\/register', [RegisterController::class, 'store']);\n\nRoute::post('\/logout', [Logoutcontroller::class, 'destroy'])\n    -&gt;middleware('auth');<\/code><\/pre>\n<p>Le passage de la d\u00e9connexion par l&rsquo;intergiciel <code>auth<\/code>\u00a0est tr\u00e8s important. Les utilisateurs doivent \u00eatre incapables d&rsquo;acc\u00e9der \u00e0 la route s&rsquo;ils ne sont pas connect\u00e9s.<\/p>\n<p>Maintenant, cr\u00e9ez un contr\u00f4leur comme nous l&rsquo;avons fait pr\u00e9c\u00e9demment :<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller Auth\/LogoutController -r<\/code><\/pre>\n<p>Nous pouvons nous assurer que nous recevons la requ\u00eate en tant que param\u00e8tre dans la m\u00e9thode <code>destroy<\/code>. Nous d\u00e9connectons l&rsquo;utilisateur via la fa\u00e7ade Auth, invalidons la session et r\u00e9g\u00e9n\u00e9rons le jeton, puis redirigeons l&rsquo;utilisateur vers la page d&rsquo;accueil :<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass LogoutController extends Controller\n{\n    public function destroy(Request $request)\n    { \n        Auth::logout();\n\n        $request-&gt;session()-&gt;invalidate();\n\n        $request-&gt;session()-&gt;regenerateToken();\n \n        return redirect('\/');\n     }\n}<\/code><\/pre>\n<h3>Se souvenir des utilisateurs<\/h3>\n<p>La plupart des applications web modernes, si ce n&rsquo;est toutes, proposent une case \u00e0 cocher \u00ab se souvenir de moi \u00bb dans leur formulaire de connexion.<\/p>\n<p>Si nous voulons fournir une fonctionnalit\u00e9 \u00ab se souvenir de moi \u00bb, nous pouvons passer une valeur bool\u00e9enne comme deuxi\u00e8me argument de la m\u00e9thode attempt.<\/p>\n<p>Si cette valeur est valide, Laravel conservera l&rsquo;utilisateur authentifi\u00e9 ind\u00e9finiment ou jusqu&rsquo;\u00e0 ce qu&rsquo;il soit d\u00e9connect\u00e9 manuellement. La table des utilisateurs doit inclure la colonne <code>remember_token<\/code> (c&rsquo;est pourquoi nous r\u00e9g\u00e9n\u00e9rons les jetons), dans laquelle nous stockerons notre jeton \u00ab remember me \u00bb.<\/p>\n<p>La migration par d\u00e9faut des utilisateurs l&rsquo;inclut d\u00e9j\u00e0.<\/p>\n<p>Tout d&rsquo;abord, vous devez ajouter le champ <strong>Remember Me<\/strong> \u00e0 votre formulaire :<\/p>\n<figure style=\"width: 1396px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/RememberMe.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/RememberMe.png\" alt=\"Ajouter le champ Remember Me \u00e0 partir de.\" width=\"1396\" height=\"596\"><\/a><figcaption class=\"wp-caption-text\">Ajouter le champ Remember Me \u00e0 partir de.<\/figcaption><\/figure>\n<p>Ensuite, r\u00e9cup\u00e9rez les informations d&rsquo;identification de la requ\u00eate et utilisez-les dans la m\u00e9thode attempt de la fa\u00e7ade Auth.<\/p>\n<p>Si l&rsquo;utilisateur doit \u00eatre m\u00e9moris\u00e9, nous le connecterons et le redirigerons vers notre page d&rsquo;accueil. Dans le cas contraire, nous enverrons une erreur :<\/p>\n<pre><code class=\"language-php\">public function store(Request $request)\n{\n    $credentials = $request-&gt;only('email', 'password');\n\n    if (Auth::attempt($credentials, $request-&gt;filled('remember'))) {\n        $request-&gt;session()-&gt;regenerate();\n\n        return redirect()-&gt;intended('\/');\n    }\n\n    return back()-&gt;withErrors([\n        'email' =&gt; 'The provided credentials do not match our records.',\n    ]);\n}<\/code><\/pre>\n<h3>R\u00e9initialisation des mots de passe<\/h3>\n<p>La plupart des applications web actuelles permettent aux utilisateurs de r\u00e9initialiser leur mot de passe.<\/p>\n<p>Nous allons cr\u00e9er une autre route pour le mot de passe oubli\u00e9 et cr\u00e9er le contr\u00f4leur comme nous l&rsquo;avons fait. En outre, nous ajouterons une route pour le lien de r\u00e9initialisation du mot de passe qui contient le jeton pour l&rsquo;ensemble du processus :<\/p>\n<pre><code class=\"language-php\">Route::post('\/forgot-password', [ForgotPasswordLinkController::class, 'store']);\nRoute::post('\/forgot-password\/{token}', [ForgotPasswordController::class, 'reset']);<\/code><\/pre>\n<p>Dans la m\u00e9thode store, nous prendrons l&rsquo;e-mail de la requ\u00eate et le validerons comme nous l&rsquo;avons fait.<\/p>\n<p>Apr\u00e8s cela, nous pouvons utiliser la m\u00e9thode <code>sendResetLink<\/code> de la fa\u00e7ade password.<\/p>\n<p>Enfin, en guise de r\u00e9ponse, nous voulons renvoyer le statut si l&rsquo;envoi du lien a r\u00e9ussi ou les erreurs dans le cas contraire :<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Password;\n\nclass ForgotPasswordLinkController extends Controller\n{\n    public function store(Request $request)\n    {\n        $request-&gt;validate([\n             'email' =&gt; 'required|email',\n        ]);\n\n        $status = Password::sendResetLink(\n            $request-&gt;only('email');\n        );\n\n        return $status === Password::RESET_LINK_SENT\n            ? back()-&gt;with('status', __($status))\n            : back()-&gt;withInput($request-&gt;only('email'))-&gt;withErrors(['email' =&gt; __($status)]);\n     }\n}<\/code><\/pre>\n<p>Maintenant que le lien de r\u00e9initialisation a \u00e9t\u00e9 envoy\u00e9 \u00e0 l&rsquo;e-mail de l&rsquo;utilisateur, nous devons nous occuper de la logique de ce qui se passe ensuite.<\/p>\n<p>Nous allons r\u00e9cup\u00e9rer le jeton, l&#8217;email et le nouveau mot de passe dans la requ\u00eate et les valider.<\/p>\n<p>Apr\u00e8s cela, nous pouvons utiliser la m\u00e9thode reset de la fa\u00e7ade du mot de passe pour laisser Laravel s&rsquo;occuper de tout le reste en coulisses.<\/p>\n<p>Nous allons toujours hacher le mot de passe pour le s\u00e9curiser.<\/p>\n<p>\u00c0 la fin, nous v\u00e9rifierons si le mot de passe a \u00e9t\u00e9 r\u00e9initialis\u00e9, et si c&rsquo;est le cas, nous redirigerons l&rsquo;utilisateur vers l&rsquo;\u00e9cran de connexion avec un message de succ\u00e8s. Dans le cas contraire, nous affichons une erreur indiquant que le mot de passe n&rsquo;a pas pu \u00eatre r\u00e9initialis\u00e9 :<\/p>\n<pre><code class=\"language-php\">namespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Support\\Facades\\Password;\nuse Illuminate\\Support\\Str;\n\nclass ForgotPasswordController extends Controller\n{\n    public function reset(Request $request)\n    {\n        $request-&gt;validate([\n            'token' =&gt; 'required',\n            'email' =&gt; 'required|email',\n            'password' =&gt; 'required|string|confirmed|min:8',\n        ]);\n\n        $status = Password::reset(\n            $request-&gt;only('email', 'password', 'password_confirmation', 'token'),\n            function ($user) use ($request) {\n                $user-&gt;forceFill(\n                    'password' =&gt; Hash::make($request-&gt;password),\n                    'remember_token' =&gt; Str::random(60)\n                ])-&gt;save();\n            }\n        );\n\n        return $status == Password::PASSWORD_RESET\n            ? redirect()-&gt;route('login')-&gt;with('status', __($status))\n            : back()-&gt;withInput($request-&gt;only('email'))-&gt;withErrors(['email' =&gt; __($status)]);\n    }\n}<\/code><\/pre>\n<h2>Laravel Breeze<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/authentification-laravel-breeze\/\">Laravel Breeze<\/a> est une impl\u00e9mentation simple des fonctions d&rsquo;authentification de Laravel : connexion, enregistrement, r\u00e9initialisation du mot de passe, v\u00e9rification de l&rsquo;e-mail et confirmation du mot de passe. Vous pouvez l&rsquo;utiliser pour impl\u00e9menter l&rsquo;authentification dans votre nouvelle application Laravel.<\/p>\n<h3>Installation et configuration<\/h3>\n<p>Apr\u00e8s avoir cr\u00e9\u00e9 votre application Laravel, tout ce que vous avez \u00e0 faire est de configurer votre base de donn\u00e9es, d&rsquo;ex\u00e9cuter vos migrations et d&rsquo;installer le paquetage laravel\/breeze via composer :<\/p>\n<pre><code class=\"language-php\">composer require laravel\/breeze --dev<\/code><\/pre>\n<p>Apr\u00e8s cela, ex\u00e9cutez ce qui suit :<\/p>\n<pre><code class=\"language-bash\">php artisan breeze:install<\/code><\/pre>\n<p>Ce dernier publiera vos vues d&rsquo;authentification, routes, contr\u00f4leurs et autres ressources qu&rsquo;il utilise. Apr\u00e8s cette \u00e9tape, vous avez un contr\u00f4le total sur tout ce que Breeze fournit.<\/p>\n<p>Maintenant, nous devons rendre notre application au frontend, donc nous allons installer nos d\u00e9pendances JS (qui utiliseront @vite) :<\/p>\n<pre><code class=\"language-php\">npm install<\/code><\/pre>\n<p>:<\/p>\n<pre><code class=\"language-php\">npm run dev<\/code><\/pre>\n<p>Apr\u00e8s cela, les liens de connexion et d&rsquo;enregistrement devraient figurer sur votre page d&rsquo;accueil, et tout devrait fonctionner sans probl\u00e8me.<\/p>\n<h2>Laravel Jetstream<\/h2>\n<p>Laravel Jetstream \u00e9tend Laravel Breeze avec des fonctionnalit\u00e9s utiles et d&rsquo;autres piles frontales.<\/p>\n<p>Il permet la connexion, l&rsquo;inscription, la v\u00e9rification des e-mails, <a href=\"https:\/\/kinsta.com\/fr\/blog\/authentification-deux-facteurs-sur-wordpress\/\">l&rsquo;authentification \u00e0 deux facteurs<\/a>, la gestion des sessions, la prise en charge des API via Sanctum, et la gestion optionnelle des \u00e9quipes.<\/p>\n<p>Lors de l&rsquo;installation de Jetstream, vous devez choisir entre Livewire et <a href=\"https:\/\/kinsta.com\/fr\/blog\/inertia-laravel\/\">Inertia<\/a> pour le front-end. Au niveau du backend, il utilise Laravel Fortify, qui est un backend d&rsquo;authentification \u00ab headless \u00bb agnostique pour Laravel.<\/p>\n<h3>Installation et configuration<\/h3>\n<p>Nous allons l&rsquo;installer via composer dans notre projet Laravel :<\/p>\n<pre><code class=\"language-php\">composer require laravel\/jetstream<\/code><\/pre>\n<p>Ensuite, nous lancerons la commande <code>php artisan jetstream:install [stack]<\/code>, qui accepte les arguments <code>[stack]<\/code>, <code>Livewire<\/code> ou <code>Inertia<\/code>. Vous pouvez passer l&rsquo;option <code>--teams<\/code>\u00a0pour activer la fonctionnalit\u00e9 teams.<\/p>\n<p>Cela installera \u00e9galement Pest <a href=\"https:\/\/kinsta.com\/fr\/blog\/langages-de-script\/\">PHP<\/a> pour les tests.<\/p>\n<p>Enfin, nous devons rendre le frontend de notre application en utilisant ce qui suit :<\/p>\n<pre><code class=\"language-php\">npm install\nnpm run dev<\/code><\/pre>\n<h2>Laravel Fortify<\/h2>\n<p>Laravel Fortify est une impl\u00e9mentation d&rsquo;authentification backend qui est agnostique au frontend. Vous n&rsquo;avez pas besoin d&rsquo;utiliser Laravel Fortify pour impl\u00e9menter les fonctionnalit\u00e9s d&rsquo;authentification de Laravel.<\/p>\n<p>Il est \u00e9galement utilis\u00e9 dans des kits de d\u00e9marrage comme Breeze et Jetstream. Vous pouvez \u00e9galement utiliser Fortify de mani\u00e8re autonome, ce qui n&rsquo;est qu&rsquo;une impl\u00e9mentation backend. Si vous l&rsquo;utilisez seul, votre frontend doit appeler les routes Fortify.<\/p>\n<h3>Installation et configuration<\/h3>\n<p>Nous pouvons installer Fortify via composer :<\/p>\n<pre><code class=\"language-php\">composer require laravel\/fortify<\/code><\/pre>\n<p>Nous devons maintenant publier les ressources de Fortify :<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"Laravel\\Fortify\\FortifyServiceProvider\"<\/code><\/pre>\n<p>Apr\u00e8s cela, nous allons cr\u00e9er un nouveau r\u00e9pertoire <strong>app\/Actions<\/strong> en plus du nouveau <strong>FortifyServiceProvider<\/strong>, du fichier de configuration et des migrations de base de donn\u00e9es.<\/p>\n<p>Enfin, ex\u00e9cutez :<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<p>Ou :<\/p>\n<pre><code class=\"language-bash\">php artisan migrate:fresh<\/code><\/pre>\n<p>Et votre Fortify est pr\u00eat \u00e0 \u00eatre utilis\u00e9.<\/p>\n<h2>Laravel Socialite<\/h2>\n<p>Laravel inclut une fonction d&rsquo;authentification des utilisateurs bas\u00e9e sur OAuth. Elle prend en charge les connexions sociales via Facebook, <a href=\"https:\/\/kinsta.com\/fr\/blog\/statistiques-twitter\/\">Twitter<\/a>, <a href=\"https:\/\/kinsta.com\/fr\/blog\/statistiques-linkedin\/\">LinkedIn<\/a>, Google, <a href=\"https:\/\/kinsta.com\/fr\/blog\/git-pour-developpement-web\/\">Bitbucket, GitHub et GitLab<\/a>.<\/p>\n<h3>Installation<\/h3>\n<p>Nous pouvons l&rsquo;installer via composer :<\/p>\n<pre><code class=\"language-php\">composer require laravel\/socialite<\/code><\/pre>\n<h3>Installation et utilisation<\/h3>\n<p>Apr\u00e8s l&rsquo;avoir install\u00e9, nous devons ajouter les informations d&rsquo;identification pour le fournisseur OAuth que notre application utilise. Nous les ajouterons dans <strong>config\/services.php<\/strong> pour chaque service.<\/p>\n<p>Dans la configuration, nous devons faire correspondre la cl\u00e9 avec les services pr\u00e9c\u00e9dents. Voici quelques-unes de ces cl\u00e9s :<\/p>\n<ul>\n<li>facebook<\/li>\n<li>twitter (pour OAuth 1.0)<\/li>\n<li>twitter-oauth-2 (pour OAuth 2.0)<\/li>\n<li>linkedin<\/li>\n<li>google<\/li>\n<li>github<\/li>\n<li>gitlab<\/li>\n<li>bitbucket<\/li>\n<\/ul>\n<p>Une configuration de service peut ressembler \u00e0 ceci :<\/p>\n<pre><code class=\"language-php\">'google' =&gt; [\n    'client_id' =&gt; env(\"GOOGLE_CLIENT_ID\"),\n    'client_secret' =&gt; env(\"GOOGLE_CLIENT_SECRET\"),\n    'redirect' =&gt; \"http:\/\/example.com\/callback-url\",\n],<\/code><\/pre>\n<h3>Authentification des utilisateurs<\/h3>\n<p>Pour cette action, nous aurons besoin de deux routes, l&rsquo;une pour rediriger l&rsquo;utilisateur vers le fournisseur OAuth :<\/p>\n<pre><code class=\"language-php\">use Laravel\\Socialite\\Facades\\Sociliate;\n\nRoute::get('\/auth\/redirect', function () {\n    return Socialite::driver('google')-&gt;redirect();\n});<\/code><\/pre>\n<p>Et une autre pour le rappel du fournisseur apr\u00e8s l&rsquo;authentification :<\/p>\n<pre><code class=\"language-php\">use Laravel\\Socialite\\Facades\\Socialite;\n\nRoute:;get('\/auht\/callback', function () {\n    $user = Socialite::driver('google')-&gt;user();\n\n    \/\/ Getting the user data\n    $user-&gt;token;\n});<\/code><\/pre>\n<p>Socialite fournit la m\u00e9thode de redirection, et la fa\u00e7ade redirige l&rsquo;utilisateur vers le fournisseur OAuth, tandis que la m\u00e9thode utilisateur examine la demande entrante et r\u00e9cup\u00e8re les informations de l&rsquo;utilisateur.<\/p>\n<p>Apr\u00e8s avoir re\u00e7u notre utilisateur, nous devons v\u00e9rifier s&rsquo;il existe dans notre base de donn\u00e9es et l&rsquo;authentifier. S&rsquo;il n&rsquo;existe pas, nous cr\u00e9erons un nouvel enregistrement pour repr\u00e9senter l&rsquo;utilisateur :<\/p>\n<pre><code class=\"language-php\">use App\\Models\\User;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Laravel\\Socialite\\Facades\\Socialite;\n\nRoute::get('\/auth\/callback', function () {\n   \/*\n   Get the user\n   *\/\n   $googleUser = Socialite::driver('google')-&gt;user();\n   \n   \/*\n   Create the user if it does not exist\n   Update the user if it exists\n   \n   Check for google_id in database\n   *\/\n   $user = User::updateOrCreate([\n       'google_id' =&gt; $googleUser-&gt;id,\n   ], [\n       'name' =&gt; $googleUser-&gt;name,\n       'email' =&gt; $googleUser-&gt;email,\n       'google_token' =&gt; $googleUser-&gt;token,\n       'google_refresh_token' =&gt; $googleUser-&gt;refreshToken,\n   ]);\n\n   \/*\n   Authenticates the user using the Auth facade\n   *\/\n    Auth::login($user);\n   \n    return redirect('\/dashboard');\n});<\/code><\/pre>\n<p>Si nous voulons limiter les possibilit\u00e9s d&rsquo;acc\u00e8s de l&rsquo;utilisateur, nous pouvons utiliser la m\u00e9thode <code>scopes<\/code>, que nous inclurons dans la demande d&rsquo;authentification. Cette m\u00e9thode fusionnera tous les champs d&rsquo;application pr\u00e9c\u00e9demment sp\u00e9cifi\u00e9s avec les champs d&rsquo;application sp\u00e9cifi\u00e9s.<\/p>\n<p>Une autre solution consiste \u00e0 utiliser la m\u00e9thode <code>setScopes<\/code> qui \u00e9crase tous les autres champs d&rsquo;application existants :<\/p>\n<pre><code class=\"language-php\">use Laravel\\Socialite\\Facades\\Socialite;\n\nreturn Socialite::driver('google')\n    -&gt;scopes(['read:user', 'write:user', 'public_repo'])\n    -&gt;redirect();\n\nreturn Socialite::driver('google')\n    -&gt;setScopes(['read:user', 'public_repo')\n    -&gt;redirect();<\/code><\/pre>\n<p>Maintenant que nous savons tout et que nous savons comment obtenir un utilisateur apr\u00e8s le rappel, examinons certaines des donn\u00e9es que nous pouvons obtenir.<\/p>\n<p>L&rsquo;utilisateur OAuth1 a <code>token<\/code> et <code>tokenSecret<\/code>:<\/p>\n<pre><code class=\"language-php\">$user = Socialite::driver('google')-&gt;user();\n\n$token = $user-&gt;token;\n$tokenSecret = $user-&gt;tokenSecret;<\/code><\/pre>\n<p>OAuth2 fournit <code>token<\/code>, <code>refreshToken<\/code>, et <code>expiresIn<\/code>:<\/p>\n<pre><code class=\"language-php\">$user = Socialite::driver('google')-&gt;user();\n\n$token = $user-&gt;token;\n$refreshToken = $user-&gt;refreshToken;\n$expiresIn = $user-&gt;expiresIn;<\/code><\/pre>\n<p>OAuth1 et OAuth2 fournissent tous deux <code>getId<\/code>, <code>getNickname<\/code>, <code>getName<\/code>, <code>getEmail<\/code>, et <code>getAvatar<\/code>:<\/p>\n<pre><code class=\"language-php\">$user = Socialite::driver('google')-&gt;user();\n\n$user-&gt;getId();\n$user-&gt;getNickName();\n$user-&gt;getName();\n$user-&gt;getEmail();\n$user-&gt;getAvatar();<\/code><\/pre>\n<p>Et si nous voulons obtenir les d\u00e9tails de l&rsquo;utilisateur \u00e0 partir d&rsquo;un jeton (OAuth 2) ou d&rsquo;un jeton et d&rsquo;un secret (OAuth 1), Socialite fournit deux m\u00e9thodes pour cela : <code>userFromToken<\/code> et <code>userFromTokenAndSecret<\/code>:<\/p>\n<pre><code class=\"language-php\">use Laravel\\Socialite\\Facades\\Socialite;\n\n$user = Socialite::driver('google')-&gt;userFromToken($token);\n$user = Socialite::driver('twitter')-&gt;userFromTokenAndSecret($token, $secret);<\/code><\/pre>\n<h2>Laravel Sanctum<\/h2>\n<p>Laravel Sanctum est un syst\u00e8me d&rsquo;authentification l\u00e9ger pour les SPA (Single Page Applications) et les applications mobiles. Il permet aux utilisateurs de g\u00e9n\u00e9rer plusieurs jetons API avec des champs d&rsquo;application sp\u00e9cifiques. Ces champs d&rsquo;application sp\u00e9cifient les actions autoris\u00e9es par un jeton.<\/p>\n<h3>Utilisations<\/h3>\n<p>Sanctum peut \u00eatre utilis\u00e9 pour d\u00e9livrer des jetons d&rsquo;API \u00e0 l&rsquo;utilisateur sans les complexit\u00e9s d&rsquo;OAuth. Ces jetons ont g\u00e9n\u00e9ralement des dur\u00e9es d&rsquo;expiration longues, comme des ann\u00e9es, mais peuvent \u00eatre r\u00e9voqu\u00e9s et r\u00e9g\u00e9n\u00e9r\u00e9s par l&rsquo;utilisateur \u00e0 tout moment.<\/p>\n<h3>Installation et configuration<\/h3>\n<p>Nous pouvons l&rsquo;installer via composer :<\/p>\n<pre><code class=\"language-php\">composer require laravel\/sanctum<\/code><\/pre>\n<p>Et nous devons publier les fichiers de configuration et de migration :<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"Laravel\\Sanctum\\SanctumServiceProvider\"<\/code><\/pre>\n<p>Maintenant que nous avons g\u00e9n\u00e9r\u00e9 de nouveaux fichiers de migration, nous devons les migrer :<\/p>\n<pre><code class=\"language-bash\">php artisan migrate:fresh<\/code><\/pre>\n<h3>Comment \u00e9mettre des jetons d&rsquo;API<\/h3>\n<p>Avant d&rsquo;\u00e9mettre des jetons, notre mod\u00e8le User doit utiliser le trait <strong>Laravel\\Sanctum\\HasApiTokens <\/strong>:<\/p>\n<pre><code class=\"language-php\">use Laravel\\Sanctum\\HasApiTokens;\n\nclass User extends Authenticable\n{\n    use HasApiTokens;\n}<\/code><\/pre>\n<p>Lorsque nous avons l&rsquo;utilisateur, nous pouvons \u00e9mettre un jeton en appelant la m\u00e9thode <code>createToken<\/code>, qui renvoie une instance <strong>Laravel\\Sanctum\\NewAccessToken<\/strong>.<\/p>\n<p>Nous pouvons appeler la m\u00e9thode <code>plainTextToken<\/code> sur l&rsquo;instance <strong>NewAccessToken<\/strong> pour voir la valeur en texte clair <strong>SHA-256<\/strong> du jeton.<\/p>\n<h2>Conseils et bonnes pratiques pour l&rsquo;authentification Laravel<\/h2>\n<h3>Invalider les sessions sur d&rsquo;autres appareils<\/h3>\n<p>Comme nous l&rsquo;avons vu pr\u00e9c\u00e9demment, l&rsquo;invalidation de la session est cruciale lorsque l&rsquo;utilisateur se d\u00e9connecte, mais cette option devrait \u00e9galement \u00eatre disponible pour tous les appareils poss\u00e9d\u00e9s.<\/p>\n<p>Cette fonctionnalit\u00e9 est g\u00e9n\u00e9ralement utilis\u00e9e lorsque l&rsquo;utilisateur change ou met \u00e0 jour son mot de passe, et que nous voulons invalider sa session \u00e0 partir de n&rsquo;importe quel autre appareil.<\/p>\n<p>Avec la fa\u00e7ade Auth, c&rsquo;est une t\u00e2che facile \u00e0 r\u00e9aliser. \u00c9tant donn\u00e9 que la route que nous utilisons a les adresses <code>auth<\/code> et <code>auth.session middleware<\/code>, nous pouvons utiliser la m\u00e9thode statique <code>logoutOtherDevices<\/code> de la fa\u00e7ade :<\/p>\n<pre><code class=\"language-php\">Route::get('\/logout', [LogoutController::class, 'invoke'])\n    -&gt;middleware(['auth', 'auth.session']);\n\n<\/code><\/pre>\n<pre><code class=\"language-php\">use Illuminate\\Support\\Facades\\Auth;\n\nAuth::logoutOtherDevices($password);<\/code><\/pre>\n<h3>Configuration avec Auth::routes()<\/h3>\n<p>La m\u00e9thode routes de la fa\u00e7ade Auth est juste une aide pour g\u00e9n\u00e9rer toutes les routes n\u00e9cessaires \u00e0 l&rsquo;authentification de l&rsquo;utilisateur.<\/p>\n<p>Les routes comprennent Login (Get, Post), Logout (Post), Register (Get, Post), et Password Reset\/Email (Get, Post).<\/p>\n<p>Lorsque vous appelez la m\u00e9thode de la fa\u00e7ade, elle effectue les op\u00e9rations suivantes :<\/p>\n<pre><code class=\"language-php\">public static function routes(array $options = [])\n{\n    if (!static::$app-&gt;providerIsLoaded(UiServiceProvider::class)) {\n        throw new RuntimeException('In order to use the Auth:;routes() method, please install the laravel\/ui package.');\n    }\n   \n    static::$app-&gt;make('router')-&gt;auth($options);\n}<\/code><\/pre>\n<p>Nous nous int\u00e9ressons \u00e0 ce qui se passe lorsque la m\u00e9thode statique est appel\u00e9e sur le routeur. Cela peut s&rsquo;av\u00e9rer d\u00e9licat en raison du fonctionnement des fa\u00e7ades, mais la m\u00e9thode suivante est appel\u00e9e de la mani\u00e8re suivante :<\/p>\n<pre><code class=\"language-php\">\/**\nRegister the typical authentication routes for an application.\n\n@param array $options\n@return void\n*\/\npublic function auth(array $options = [])\n{\n    \/\/ Authentication Routes...\n    $this-&gt;get('login', 'Auth\\LoginController@showLoginForm')-&gt;name('login');\n    $this-&gt;post('login', 'Auth\\LoginController@login');\n    $this-&gt;post('logout', 'Auth\\LoginController@logout')-&gt;name('logout');\n\n    \/\/ Registration Routes...\n    if ($options['register'] ?? true) {\n        $this-&gt;get('register', 'Auth\\RegisterController@showRegistrationForm')-&gt;name('register');\n        $this-&gt;post('register', 'Auth\\RegisterController@register');\n    }\n   \n    \/\/ Password Reset Routes...\n    if ($options['reset'] ?? true) {\n        $this-&gt;resetPassword();\n    }\n\n    \/\/ Email Verification Routes...\n    if ($options['verify'] ?? false) {\n        $this-&gt;emailVerification();\n    }\n}   <\/code><\/pre>\n<p>Par d\u00e9faut, il g\u00e9n\u00e8re toutes les routes \u00e0 part celle de la v\u00e9rification de l&#8217;email. Nous aurons toujours les routes Login et Logout, mais les autres routes peuvent \u00eatre contr\u00f4l\u00e9es \u00e0 travers le tableau d&rsquo;options.<\/p>\n<p>Si nous voulons seulement avoir login\/logout et register, nous pouvons passer le tableau d&rsquo;options suivant :<\/p>\n<pre><code class=\"language-php\">$options = [\"register\" =&gt; true, \"reset\" =&gt; false, \"verify\" =&gt; false];<\/code><\/pre>\n<h3>Prot\u00e9ger les routes et les guards personnalis\u00e9s<\/h3>\n<p>Nous voulons nous assurer que certaines routes ne sont accessibles qu&rsquo;aux utilisateurs authentifi\u00e9s, ce qui peut \u00eatre fait rapidement en appelant la m\u00e9thode middleware sur la fa\u00e7ade Route ou en cha\u00eenant la m\u00e9thode middleware sur celle-ci :<\/p>\n<pre><code class=\"language-php\">Route::middleware('auth')-&gt;get('\/user', function (Request $request) {\n    return $request-&gt;user();\n});\n\nRoute::get('\/user', function (Request $request) {\n    return $request-&gt;user();\n})-&gt;middleware('auth');<\/code><\/pre>\n<p>Cette protection garantit que les demandes entrantes sont authentifi\u00e9es.<\/p>\n<h3>Confirmation du mot de passe<\/h3>\n<p>Pour renforcer la <a href=\"https:\/\/kinsta.com\/fr\/blog\/verifier-securite-site-web\/\">s\u00e9curit\u00e9 de votre site web<\/a>, vous souhaitez souvent confirmer le mot de passe d&rsquo;un utilisateur avant de passer \u00e0 une autre t\u00e2che.<\/p>\n<p>Nous devons d\u00e9finir une route \u00e0 partir de la vue de confirmation du mot de passe pour traiter la demande. Elle validera et redirigera l&rsquo;utilisateur vers la destination pr\u00e9vue. En m\u00eame temps, nous nous assurerons que notre mot de passe appara\u00eet confirm\u00e9 dans la session. Par d\u00e9faut, le mot de passe doit \u00eatre reconfirm\u00e9 toutes les trois heures, mais cela peut \u00eatre modifi\u00e9 dans le fichier de configuration <strong>config\/auth.php<\/strong>:<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Support\\Facades\\Redirect;\n\nRoute::post('\/confirm-password', function (Request $request) {\n    if (!Hash::check($request-&gt;password, $request-&gt;user()-&gt;password)) {\n        return back()-&gt;withErrors([\n            'password' =&gt; ['The provided password does not match our records.']\n        ]);\n    }\n\n    $request-&gt;session()-&gt;passwordConfirmed();\n\n    return redirect()-&gt;intended();\n})-&gt;middleware(['auth']);<\/code><\/pre>\n<h3>Contrat Authenticable<\/h3>\n<p>Le contrat Authenticable situ\u00e9 \u00e0 IlluminateContractsAuth d\u00e9finit un mod\u00e8le de ce que la fa\u00e7ade UserProvider doit impl\u00e9menter :<\/p>\n<pre><code class=\"language-php\">namespace Illuminate\\Contracts\\Auth;\n\ninterface Authenticable \n{\n    public function getAuthIdentifierName();\n    \n    public function getAuthIdentifier();\n    \n    public function getAuthPassord();\n  \n    public function getRememberToken();\n\n    public function setRememberToken($value);\n  \n    public function getrememberTokenName();\n}<\/code><\/pre>\n<p>L&rsquo;interface permet au syst\u00e8me d&rsquo;authentification de travailler avec n&rsquo;importe quelle classe \u00ab user \u00bb qui l&rsquo;impl\u00e9mente.<\/p>\n<p>Cette interface permet au syst\u00e8me d&rsquo;authentification de fonctionner avec n&rsquo;importe quelle classe \u00ab user \u00bb qui l&rsquo;impl\u00e9mente, ind\u00e9pendamment de l&rsquo;ORM ou des couches de stockage utilis\u00e9es. Par d\u00e9faut, Laravel poss\u00e8de la classe AppModelsUser qui impl\u00e9mente cette interface, ce qui est \u00e9galement visible dans le fichier de configuration :<\/p>\n<pre><code class=\"language-php\">return [\n    'providers' =&gt; [\n        'users' =&gt; [\n            'driver' =&gt; 'eloquent',\n            'model' =&gt; App\\Models\\User::class,\n        ],\n     ],\n];<\/code><\/pre>\n<h3>\u00c9v\u00e9nements d&rsquo;authentification<\/h3>\n<p>Il y a beaucoup d&rsquo;\u00e9v\u00e9nements qui sont envoy\u00e9s pendant l&rsquo;ensemble du processus d&rsquo;authentification.<\/p>\n<p>En fonction de vos objectifs, vous pouvez attacher des r\u00e9cepteurs \u00e0 ces \u00e9v\u00e9nements dans votre site <code>EventServiceProvider<\/code>.<\/p>\n<figure style=\"width: 1003px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Laravel-Listeners.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Laravel-Listeners.png\" alt=\"Liste des listeners Laravel g\u00e9n\u00e9r\u00e9s pour notre service d'authentification\" width=\"1003\" height=\"1999\"><\/a><figcaption class=\"wp-caption-text\">Liste des listeners Laravel g\u00e9n\u00e9r\u00e9s pour notre service d&rsquo;authentification<\/figcaption><\/figure>\n<h3>Cr\u00e9er rapidement de nouveaux utilisateurs<\/h3>\n<p>La cr\u00e9ation rapide d&rsquo;un nouvel utilisateur peut se faire par l&rsquo;interm\u00e9diaire de la fonction <strong>App\\User<\/strong>:<\/p>\n<pre><code class=\"language-php\">$user = new AppUser();\n$user-&gt;password = Hash::make('strong_password');\n$user-&gt;email = 'test-email@user.com';\n$user-&gt;name = 'Username';\n$user-&gt;save();<\/code><\/pre>\n<p>Ou par la m\u00e9thode statique create sur la fa\u00e7ade User :<\/p>\n<pre><code class=\"language-php\">User::create([\n 'password' =&gt; Hash::make('strong-password'),\n 'email' =&gt; 'test-email@user.com',\n 'name' =&gt; 'username'\n]);<\/code><\/pre>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>L&rsquo;\u00e9cosyst\u00e8me Laravel dispose d&rsquo;un grand nombre de kits de d\u00e9marrage pour faire fonctionner votre application avec un syst\u00e8me d&rsquo;authentification, comme Breeze et Jetstream. Ils sont hautement personnalisables car le code est g\u00e9n\u00e9r\u00e9 de notre c\u00f4t\u00e9, et nous pouvons le modifier autant que nous le souhaitons, en l&rsquo;utilisant comme un mod\u00e8le si n\u00e9cessaire.<\/p>\n<p>Il existe de nombreux probl\u00e8mes de s\u00e9curit\u00e9 concernant l&rsquo;authentification et ses subtilit\u00e9s, mais tous peuvent \u00eatre r\u00e9solus facilement gr\u00e2ce aux outils fournis par Laravel. Ces outils sont hautement personnalisables et faciles \u00e0 utiliser.<\/p>\n<p>D\u00e9ployez vos applications Laravel rapidement et efficacement avec notre service d&rsquo;h\u00e9bergement Laravel rapide. Voyez votre application en action avec un <a href=\"https:\/\/kinsta.com\/fr\/inscription\/?product_type=app-db\">essai gratuit<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;authentification est l&rsquo;une des fonctions les plus critiques et les plus essentielles des applications web. Les frameworks web tels que Laravel offrent de nombreuses possibilit\u00e9s d&rsquo;authentification &#8230;<\/p>\n","protected":false},"author":267,"featured_media":67853,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[986],"class_list":["post-67803","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Un guide complet de l&#039;authentification Laravel<\/title>\n<meta name=\"description\" content=\"Renforcez la s\u00e9curit\u00e9 de votre application web avec l&#039;authentification Laravel. Commencez par les meilleures pratiques de s\u00e9curit\u00e9 et apprenez \u00e0 accorder des acc\u00e8s s\u00e9curis\u00e9s.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Un guide complet de l&#039;authentification Laravel\" \/>\n<meta property=\"og:description\" content=\"Renforcez la s\u00e9curit\u00e9 de votre application web avec l&#039;authentification Laravel. Commencez par les meilleures pratiques de s\u00e9curit\u00e9 et apprenez \u00e0 accorder des acc\u00e8s s\u00e9curis\u00e9s.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-30T13:41:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-08T14:09:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Coman Cosmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Renforcez la s\u00e9curit\u00e9 de votre application web avec l&#039;authentification Laravel. Commencez par les meilleures pratiques de s\u00e9curit\u00e9 et apprenez \u00e0 accorder des acc\u00e8s s\u00e9curis\u00e9s.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Coman Cosmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/\"},\"author\":{\"name\":\"Coman Cosmin\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da\"},\"headline\":\"Un guide complet de l&rsquo;authentification Laravel\",\"datePublished\":\"2023-03-30T13:41:31+00:00\",\"dateModified\":\"2025-09-08T14:09:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/\"},\"wordCount\":3811,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/\",\"name\":\"Un guide complet de l'authentification Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg\",\"datePublished\":\"2023-03-30T13:41:31+00:00\",\"dateModified\":\"2025-09-08T14:09:36+00:00\",\"description\":\"Renforcez la s\u00e9curit\u00e9 de votre application web avec l'authentification Laravel. Commencez par les meilleures pratiques de s\u00e9curit\u00e9 et apprenez \u00e0 accorder des acc\u00e8s s\u00e9curis\u00e9s.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Un guide complet de l'authentification Laravel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Un guide complet de l&#8217;authentification Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da\",\"name\":\"Coman Cosmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g\",\"caption\":\"Coman Cosmin\"},\"description\":\"Cosmin Coman is a technology writer and developer with over 3 years of experience. Apart from writing for Kinsta, he has assisted in research at nuclear physics facilities and universities. Tech-savvy and integrated into the community, he always comes up with innovative solutions.\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/comancosmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Un guide complet de l'authentification Laravel","description":"Renforcez la s\u00e9curit\u00e9 de votre application web avec l'authentification Laravel. Commencez par les meilleures pratiques de s\u00e9curit\u00e9 et apprenez \u00e0 accorder des acc\u00e8s s\u00e9curis\u00e9s.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/","og_locale":"fr_FR","og_type":"article","og_title":"Un guide complet de l'authentification Laravel","og_description":"Renforcez la s\u00e9curit\u00e9 de votre application web avec l'authentification Laravel. Commencez par les meilleures pratiques de s\u00e9curit\u00e9 et apprenez \u00e0 accorder des acc\u00e8s s\u00e9curis\u00e9s.","og_url":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-03-30T13:41:31+00:00","article_modified_time":"2025-09-08T14:09:36+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg","type":"image\/jpeg"}],"author":"Coman Cosmin","twitter_card":"summary_large_image","twitter_description":"Renforcez la s\u00e9curit\u00e9 de votre application web avec l'authentification Laravel. Commencez par les meilleures pratiques de s\u00e9curit\u00e9 et apprenez \u00e0 accorder des acc\u00e8s s\u00e9curis\u00e9s.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Coman Cosmin","Dur\u00e9e de lecture estim\u00e9e":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/"},"author":{"name":"Coman Cosmin","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da"},"headline":"Un guide complet de l&rsquo;authentification Laravel","datePublished":"2023-03-30T13:41:31+00:00","dateModified":"2025-09-08T14:09:36+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/"},"wordCount":3811,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/","url":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/","name":"Un guide complet de l'authentification Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg","datePublished":"2023-03-30T13:41:31+00:00","dateModified":"2025-09-08T14:09:36+00:00","description":"Renforcez la s\u00e9curit\u00e9 de votre application web avec l'authentification Laravel. Commencez par les meilleures pratiques de s\u00e9curit\u00e9 et apprenez \u00e0 accorder des acc\u00e8s s\u00e9curis\u00e9s.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/guide-authentification-laravel.jpeg","width":1460,"height":730,"caption":"Un guide complet de l'authentification Laravel"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/guide-authentification-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/fr\/sujets\/laravel\/"},{"@type":"ListItem","position":3,"name":"Un guide complet de l&#8217;authentification Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/aa307e51da3929c7aead1f4b4439f3da","name":"Coman Cosmin","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ede71ae86b38c64bcf00417fd17a686b?s=96&d=mm&r=g","caption":"Coman Cosmin"},"description":"Cosmin Coman is a technology writer and developer with over 3 years of experience. Apart from writing for Kinsta, he has assisted in research at nuclear physics facilities and universities. Tech-savvy and integrated into the community, he always comes up with innovative solutions.","url":"https:\/\/kinsta.com\/fr\/blog\/author\/comancosmin\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/67803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/267"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=67803"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/67803\/revisions"}],"predecessor-version":[{"id":80768,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/67803\/revisions\/80768"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/translations\/dk"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/67803\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/67853"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=67803"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=67803"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=67803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}