<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.abdoulaye-diallo.com/index.php?action=history&amp;feed=atom&amp;title=Mise_en_place_de_l%27authentification_sur_Laravel</id>
	<title>Mise en place de l'authentification sur Laravel - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.abdoulaye-diallo.com/index.php?action=history&amp;feed=atom&amp;title=Mise_en_place_de_l%27authentification_sur_Laravel"/>
	<link rel="alternate" type="text/html" href="https://wiki.abdoulaye-diallo.com/index.php?title=Mise_en_place_de_l%27authentification_sur_Laravel&amp;action=history"/>
	<updated>2026-07-07T17:09:47Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.abdoulaye-diallo.com/index.php?title=Mise_en_place_de_l%27authentification_sur_Laravel&amp;diff=29&amp;oldid=prev</id>
		<title>Abdoulaye le 11 février 2024 à 17:51</title>
		<link rel="alternate" type="text/html" href="https://wiki.abdoulaye-diallo.com/index.php?title=Mise_en_place_de_l%27authentification_sur_Laravel&amp;diff=29&amp;oldid=prev"/>
		<updated>2024-02-11T17:51:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 11 février 2024 à 17:51&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l204&quot;&gt;Ligne 204 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 204 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Laravel]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Abdoulaye</name></author>
	</entry>
	<entry>
		<id>https://wiki.abdoulaye-diallo.com/index.php?title=Mise_en_place_de_l%27authentification_sur_Laravel&amp;diff=28&amp;oldid=prev</id>
		<title>Abdoulaye : Page créée avec « Pour rapidement mettre en place l'authentification pour une API Laravel, nous allons utiliser la librairie Laravel Sanctum :   Laravel Sanctum est une bibliothèque qui simplifie la mise en place de l'authentification par API dans les applications Laravel. Elle utilise des jetons API pour permettre l'authentification et la protection des routes de votre application.  Voici les étapes de base pour mettre en place l'authentification par API avec Laravel Sanctum :... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.abdoulaye-diallo.com/index.php?title=Mise_en_place_de_l%27authentification_sur_Laravel&amp;diff=28&amp;oldid=prev"/>
		<updated>2024-02-11T17:50:02Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « Pour rapidement mettre en place l&amp;#039;authentification pour une API Laravel, nous allons utiliser la librairie Laravel Sanctum :   Laravel Sanctum est une bibliothèque qui simplifie la mise en place de l&amp;#039;authentification par API dans les applications Laravel. Elle utilise des jetons API pour permettre l&amp;#039;authentification et la protection des routes de votre application.  Voici les étapes de base pour mettre en place l&amp;#039;authentification par API avec Laravel Sanctum :... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Pour rapidement mettre en place l'authentification pour une API Laravel, nous allons utiliser la librairie Laravel Sanctum : &lt;br /&gt;
&lt;br /&gt;
Laravel Sanctum est une bibliothèque qui simplifie la mise en place de l'authentification par API dans les applications Laravel. Elle utilise des jetons API pour permettre l'authentification et la protection des routes de votre application.&lt;br /&gt;
&lt;br /&gt;
Voici les étapes de base pour mettre en place l'authentification par API avec Laravel Sanctum :&lt;br /&gt;
&lt;br /&gt;
== 1. Installation de Laravel Sanctum : ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
composer require laravel/sanctum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Configuration de Sanctum : ==&lt;br /&gt;
Après avoir installé Sanctum, ajoutez le service provider dans le fichier &amp;lt;code&amp;gt;config/app.php&amp;lt;/code&amp;gt; :&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
'providers' =&amp;gt; [&lt;br /&gt;
    // ...&lt;br /&gt;
    Laravel\Sanctum\SanctumServiceProvider::class,&lt;br /&gt;
],&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Ensuite, exécutez la commande artisan pour publier la configuration de Sanctum :&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
php artisan vendor:publish --provider=&amp;quot;Laravel\Sanctum\SanctumServiceProvider&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Configuration de CORS (facultatif) : ==&lt;br /&gt;
Si votre application front-end est hébergée sur un domaine différent, assurez-vous de configurer les paramètres CORS dans le fichier &amp;lt;code&amp;gt;config/sanctum.php&amp;lt;/code&amp;gt;. Ajoutez votre domaine dans la section &amp;lt;code&amp;gt;stateful&amp;lt;/code&amp;gt; :&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
'stateful' =&amp;gt; explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(&lt;br /&gt;
        '%s%s',&lt;br /&gt;
        'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1,https://abdoulaye-diallo.com',&lt;br /&gt;
        Sanctum::currentApplicationUrlWithPort()&lt;br /&gt;
    ))),&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Migration de la base de données : ==&lt;br /&gt;
Exécutez la migration pour créer les tables nécessaires à Sanctum :&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php artisan migrate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;5. Configuration du modèle User :&lt;br /&gt;
&lt;br /&gt;
Assurez-vous que votre modèle &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; utilise le trait &amp;lt;code&amp;gt;HasApiTokens&amp;lt;/code&amp;gt; fourni par Sanctum. Ce trait permet de générer des jetons API pour les utilisateurs.&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Laravel\Sanctum\HasApiTokens;&lt;br /&gt;
&lt;br /&gt;
class User extends Authenticatable&lt;br /&gt;
{&lt;br /&gt;
    use HasApiTokens, Notifiable;&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Configuration des routes API : ==&lt;br /&gt;
Dans votre fichier de routes API (&amp;lt;code&amp;gt;routes/api.php&amp;lt;/code&amp;gt;), vous pouvez utiliser les méthodes &amp;lt;code&amp;gt;Sanctum::routes()&amp;lt;/code&amp;gt; pour définir les routes d'authentification :&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Laravel\Sanctum\Sanctum;&lt;br /&gt;
&lt;br /&gt;
Sanctum::routes();&lt;br /&gt;
&lt;br /&gt;
Route::middleware('auth:sanctum')-&amp;gt;group(function () {&lt;br /&gt;
    // Routes protégées par Sanctum&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. Routes API : ==&lt;br /&gt;
Dans votre fichier &amp;lt;code&amp;gt;routes/api.php&amp;lt;/code&amp;gt;, vous pouvez définir les routes pour ces fonctionnalités. Voici un exemple :&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
use App\Http\Controllers\Auth\LoginController;&lt;br /&gt;
use App\Http\Controllers\Auth\RegisterController;&lt;br /&gt;
use App\Http\Controllers\Auth\ForgotPasswordController;&lt;br /&gt;
use App\Http\Controllers\Auth\ResetPasswordController;&lt;br /&gt;
&lt;br /&gt;
// Connexion&lt;br /&gt;
Route::post('/login', [LoginController::class, 'login']);&lt;br /&gt;
&lt;br /&gt;
// Inscription&lt;br /&gt;
Route::post('/register', [RegisterController::class, 'register']);&lt;br /&gt;
&lt;br /&gt;
// Mot de passe oublié&lt;br /&gt;
Route::post('/forgot-password', [ForgotPasswordController::class, 'sendResetLinkEmail']);&lt;br /&gt;
&lt;br /&gt;
// Réinitialisation du mot de passe&lt;br /&gt;
Route::post('/reset-password', [ResetPasswordController::class, 'reset']);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. Contrôleurs : ==&lt;br /&gt;
Créez les contrôleurs correspondants pour ces routes. Utilisez la commande artisan pour générer ces contrôleurs :&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php artisan make:controller Auth\LoginController&lt;br /&gt;
php artisan make:controller Auth\RegisterController&lt;br /&gt;
php artisan make:controller Auth\ForgotPasswordController&lt;br /&gt;
php artisan make:controller Auth\ResetPasswordController&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Dans ces contrôleurs, vous implémenterez la logique nécessaire pour gérer l'authentification et la réinitialisation du mot de passe.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de Contrôleur de Connexion (&amp;lt;code&amp;gt;LoginController.php&amp;lt;/code&amp;gt;) : ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
namespace App\Http\Controllers\Auth;&lt;br /&gt;
&lt;br /&gt;
use Illuminate\Http\Request;&lt;br /&gt;
use App\Http\Controllers\Controller;&lt;br /&gt;
use Illuminate\Support\Facades\Auth;&lt;br /&gt;
&lt;br /&gt;
class LoginController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    public function login(Request $request)&lt;br /&gt;
    {&lt;br /&gt;
        $credentials = $request-&amp;gt;only('email', 'password');&lt;br /&gt;
&lt;br /&gt;
        if (Auth::attempt($credentials)) {&lt;br /&gt;
            $user = Auth::user();&lt;br /&gt;
            $token = $user-&amp;gt;createToken('token-name')-&amp;gt;plainTextToken;&lt;br /&gt;
&lt;br /&gt;
            return response()-&amp;gt;json(['token' =&amp;gt; $token]);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return response()-&amp;gt;json(['message' =&amp;gt; 'Invalid credentials'], 401);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exemple de Contrôleur d'Inscription (&amp;lt;code&amp;gt;RegisterController.php&amp;lt;/code&amp;gt;) : ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
namespace App\Http\Controllers\Auth;&lt;br /&gt;
&lt;br /&gt;
use Illuminate\Http\Request;&lt;br /&gt;
use App\Http\Controllers\Controller;&lt;br /&gt;
use App\Models\User;&lt;br /&gt;
use Illuminate\Support\Facades\Hash;&lt;br /&gt;
&lt;br /&gt;
class RegisterController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    public function register(Request $request)&lt;br /&gt;
    {&lt;br /&gt;
        $request-&amp;gt;validate([&lt;br /&gt;
            'name' =&amp;gt; 'required|string',&lt;br /&gt;
            'email' =&amp;gt; 'required|email|unique:users,email',&lt;br /&gt;
            'password' =&amp;gt; 'required|min:8',&lt;br /&gt;
        ]);&lt;br /&gt;
&lt;br /&gt;
        $user = User::create([&lt;br /&gt;
            'name' =&amp;gt; $request-&amp;gt;name,&lt;br /&gt;
            'email' =&amp;gt; $request-&amp;gt;email,&lt;br /&gt;
            'password' =&amp;gt; Hash::make($request-&amp;gt;password),&lt;br /&gt;
        ]);&lt;br /&gt;
&lt;br /&gt;
        return response()-&amp;gt;json(['message' =&amp;gt; 'Registration successful', 'user' =&amp;gt; $user]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exemple de Contrôleur de Mot de Passe Oublié (&amp;lt;code&amp;gt;ForgotPasswordController.php&amp;lt;/code&amp;gt;) : ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
namespace App\Http\Controllers\Auth;&lt;br /&gt;
&lt;br /&gt;
use Illuminate\Http\Request;&lt;br /&gt;
use App\Http\Controllers\Controller;&lt;br /&gt;
use Illuminate\Support\Facades\Password;&lt;br /&gt;
&lt;br /&gt;
class ForgotPasswordController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    public function sendResetLinkEmail(Request $request)&lt;br /&gt;
    {&lt;br /&gt;
        $request-&amp;gt;validate(['email' =&amp;gt; 'required|email']);&lt;br /&gt;
&lt;br /&gt;
        $status = Password::sendResetLink(&lt;br /&gt;
            $request-&amp;gt;only('email')&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
        return $status === Password::RESET_LINK_SENT&lt;br /&gt;
            ? response()-&amp;gt;json(['message' =&amp;gt; __($status)])&lt;br /&gt;
            : response()-&amp;gt;json(['error' =&amp;gt; __($status)], 500);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exemple de Contrôleur de Réinitialisation du Mot de Passe (&amp;lt;code&amp;gt;ResetPasswordController.php&amp;lt;/code&amp;gt;) : ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
namespace App\Http\Controllers\Auth;&lt;br /&gt;
&lt;br /&gt;
use Illuminate\Http\Request;&lt;br /&gt;
use App\Http\Controllers\Controller;&lt;br /&gt;
use Illuminate\Support\Facades\Password;&lt;br /&gt;
use Illuminate\Support\Facades\Hash;&lt;br /&gt;
&lt;br /&gt;
class ResetPasswordController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    public function reset(Request $request)&lt;br /&gt;
    {&lt;br /&gt;
        $request-&amp;gt;validate([&lt;br /&gt;
            'token' =&amp;gt; 'required|string',&lt;br /&gt;
            'email' =&amp;gt; 'required|email',&lt;br /&gt;
            'password' =&amp;gt; 'required|min:8|confirmed',&lt;br /&gt;
        ]);&lt;br /&gt;
&lt;br /&gt;
        $status = Password::reset(&lt;br /&gt;
            $request-&amp;gt;only('email', 'password', 'password_confirmation', 'token'),&lt;br /&gt;
            function ($user, $password) {&lt;br /&gt;
                $user-&amp;gt;forceFill([&lt;br /&gt;
                    'password' =&amp;gt; Hash::make($password),&lt;br /&gt;
                    'remember_token' =&amp;gt; Str::random(60),&lt;br /&gt;
                ])-&amp;gt;save();&lt;br /&gt;
            }&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
        return $status === Password::PASSWORD_RESET&lt;br /&gt;
            ? response()-&amp;gt;json(['message' =&amp;gt; __($status)])&lt;br /&gt;
            : response()-&amp;gt;json(['error' =&amp;gt; __($status)], 500);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abdoulaye</name></author>
	</entry>
</feed>