Passer au contenu principal

Qu’est-ce que l’authentification

L’authentification (Authentication) est le mécanisme qui vérifie « qui » est l’utilisateur qui accède à l’application. Sur une application web, un formulaire de connexion reçoit un e-mail et un mot de passe : si les identifiants sont valides, les informations utilisateur sont stockées en session. Pour les requêtes suivantes, cette session sert à identifier l’utilisateur. L’authentification Laravel repose sur deux concepts : les « gardes » (guards) et les « providers ».
  • Garde : définit comment authentifier l’utilisateur à chaque requête. Par défaut, la garde session utilise la session et les cookies pour gérer l’état.
  • Provider : définit comment récupérer les utilisateurs depuis la base. Par défaut, Eloquent est utilisé.
Le fichier de configuration d’authentification est config/auth.php. Ses valeurs par défaut couvrent la plupart des applications web.

Authentification via un kit de démarrage

Avec Laravel, il suffit de choisir un kit de démarrage lors de la création via laravel new pour que la connexion, l’inscription et la réinitialisation du mot de passe soient configurées automatiquement. C’est la méthode recommandée.
1

Créer l'application

Créez l’application avec l’installateur Laravel. Une invite propose de choisir un kit de démarrage.
laravel new my-app
Vous pouvez choisir entre React, Vue, Livewire et Svelte. Sélectionnez celui qui correspond à la pile technique de votre équipe.
2

Installer les dépendances frontend

cd my-app
npm install && npm run build
3

Préparer la base de données

Vérifiez la configuration de base de données dans .env, puis exécutez les migrations.
php artisan migrate
La migration initiale, qui inclut la table users, est appliquée.
4

Démarrer le serveur de développement

composer run dev
En vous rendant sur http://localhost:8000, vous verrez les liens « Register » et « Log in ». Accédez à /register pour créer un utilisateur.
Le kit de démarrage donne accès immédiat aux fonctionnalités suivantes.
FonctionnalitéURL
Inscription/register
Connexion/login
Réinitialisation du mot de passe/forgot-password
Vérification de l’e-mail/email/verify
Édition du profil/settings/profile
Le code généré par le kit (contrôleurs, routes, vues) se trouve dans votre application. Vous êtes libre de le modifier et de le personnaliser.

Kits de démarrage disponibles

React

Application SPA moderne construite avec React 19, TypeScript, Tailwind et shadcn/ui. Grâce à Inertia, vous conservez le routage côté serveur tout en utilisant un frontend React.

Vue

Utilise la Composition API de Vue, TypeScript, Tailwind et shadcn-vue. Comme pour React, Inertia sert de pont avec le backend.

Livewire

Utilise Livewire pour construire des UI dynamiques uniquement en PHP. Idéal pour les équipes centrées sur Blade ou celles qui veulent éviter les frameworks JavaScript. La bibliothèque de composants Flux UI est incluse.

Svelte

Utilise Svelte 5, TypeScript, Tailwind et shadcn-svelte. Combiné à Inertia pour construire une SPA moderne.

Façade d’authentification

La façade Auth permet d’obtenir l’utilisateur courant et de vérifier l’état d’authentification.

Récupérer l’utilisateur authentifié

use Illuminate\Support\Facades\Auth;

// Utilisateur courant
$user = Auth::user();

// ID uniquement
$id = Auth::id();
Dans un contrôleur, vous pouvez aussi l’obtenir depuis l’objet Request.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index(Request $request)
    {
        $user = $request->user();

        return view('dashboard', ['user' => $user]);
    }
}

Vérifier l’état d’authentification

Auth::check() retourne true si l’utilisateur est connecté, false sinon.
use Illuminate\Support\Facades\Auth;

if (Auth::check()) {
    // Connecté
} else {
    // Non connecté
}
Dans un template Blade, les directives @auth et @guest sont pratiques.
@auth
    <p>Bonjour, {{ Auth::user()->name }}</p>
    <a href="/logout">Déconnexion</a>
@endauth

@guest
    <a href="/login">Connexion</a>
    <a href="/register">Inscription</a>
@endguest

Protéger des routes

Pour restreindre une route aux utilisateurs connectés, utilisez le middleware auth.
// routes/web.php

// Accessible aux utilisateurs authentifiés uniquement
Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware('auth');
Un utilisateur non authentifié est redirigé automatiquement vers /login. Pour protéger plusieurs routes, utilisez un groupe.
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/profile', [ProfileController::class, 'show']);
    Route::get('/settings', [SettingsController::class, 'index']);
});
Sans le middleware auth, un utilisateur non connecté peut accéder aux routes. Appliquez-le systématiquement aux routes protégées.

Routes réservées aux invités

Pour rediriger les utilisateurs déjà connectés, utilisez le middleware guest. Appliqué aux pages de connexion et d’inscription, il redirige les utilisateurs connectés vers le tableau de bord.
Route::middleware('guest')->group(function () {
    Route::get('/login', [AuthController::class, 'showLogin']);
    Route::get('/register', [AuthController::class, 'showRegister']);
});

Authentification manuelle

Pour implémenter la connexion manuellement (sans kit de démarrage), utilisez Auth::attempt().
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    public function login(Request $request): RedirectResponse
    {
        $credentials = $request->validate([
            'email' => ['required', 'email'],
            'password' => ['required'],
        ]);

        if (Auth::attempt($credentials)) {
            // Succès — régénérer la session pour prévenir les attaques CSRF
            $request->session()->regenerate();

            return redirect()->intended('/dashboard');
        }

        // Échec
        return back()->withErrors([
            'email' => 'L\'e-mail ou le mot de passe est incorrect.',
        ])->onlyInput('email');
    }
}
Le premier argument est un tableau d’identifiants. Le mot de passe est comparé automatiquement au hachage : passez-le en clair. Pour implémenter la fonctionnalité « Se souvenir de moi », passez true comme second argument.
// Utilise la valeur de la case à cocher « Se souvenir de moi »
Auth::attempt($credentials, $request->boolean('remember'));
Même en implémentation manuelle, inspirez-vous du code du kit de démarrage : c’est un excellent exemple de mise en œuvre sécurisée.

Déconnexion

Appelez Auth::logout() pour déconnecter l’utilisateur. Il est recommandé d’invalider la session et de régénérer le token CSRF en même temps.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;

class LogoutController extends Controller
{
    public function logout(Request $request): RedirectResponse
    {
        Auth::logout();

        // Invalider la session
        $request->session()->invalidate();

        // Régénérer le token CSRF
        $request->session()->regenerateToken();

        return redirect('/');
    }
}
Utilisez la méthode POST pour la route.
Route::post('/logout', [LogoutController::class, 'logout'])->middleware('auth');
Dans un template Blade, utilisez un formulaire pour envoyer une requête POST.
<form method="POST" action="/logout">
    @csrf
    <button type="submit">Déconnexion</button>
</form>

Récapitulatif

ObjectifMéthode
Ajouter rapidement l’authentificationKit de démarrage (laravel new)
Récupérer l’utilisateur courantAuth::user() / $request->user()
Vérifier l’état de connexionAuth::check()
Protéger une route->middleware('auth')
Se connecter manuellementAuth::attempt($credentials)
Se déconnecterAuth::logout()

Prochaines étapes

Middleware

Découvrez plus en détail le middleware auth et la création de vos propres middlewares.
Dernière modification le 13 juillet 2026