Table of Contents
Authentifier les Utilisateurs avec Laravel
Introduction
L’authentification des utilisateurs est un aspect crucial de la sécurité d’une application web. Dans cette partie, nous allons explorer comment utiliser le framework Laravel pour authentifier les utilisateurs et gérer leur connexion. Nous allons voir comment créer un système d’authentification complet avec Laravel, y compris l’enregistrement, la connexion et la gestion des mot de passe.
Les Contrôleurs Auth
Les contrôleurs Auth sont responsables de l’authentification des utilisateurs. Il existe plusieurs contrôleurs Auth dans Laravel, notamment :
RegisterController: permet aux utilisateurs de s’enregistrerLoginController: permet aux utilisateurs de se connecterResetPasswordController: permet aux utilisateurs de réinitialiser leur mot de passeForgotPasswordController: permet aux utilisateurs de demander un lien pour réinitialiser leur mot de passe
Contrôleur Register
Le contrôleur RegisterController est responsable de l’enregistrement des nouveaux utilisateurs. Il utilise la traite RegistersUsers qui gère les étapes suivantes :
- Afficher la vue d’inscription
- Valider les données entrées par l’utilisateur
- Créer un nouveau utilisateur avec les informations fournies
Exemple :
// app/Http/Controllers/RegisterController.php
use Illuminate\Http\Request;
use App\RegisterUsers;
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = '/home';
public function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
public function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}
Contrôleur Login
Le contrôleur LoginController est responsable de la connexion des utilisateurs. Il utilise la traite AuthenticatesUsers qui gère les étapes suivantes :
- Afficher la vue de connexion
- Valider les données entrées par l’utilisateur
- Vérifier si l’utilisateur a accès à la page demandée
Exemple :
// app/Http/Controllers/LoginController.php
use Illuminate\Http\Request;
use App\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function showLoginForm()
{
return view('auth.login');
}
public function login(Request $request)
{
// Valider les données entrées par l'utilisateur
$validatedData = Validator::make($request->all(), [
'email' => 'required|string|email|max:255',
'password' => 'required|string|min:6',
]);
if ($validatedData->fails()) {
return redirect()->back()->withErrors($validatedData)->withInput();
}
// Vérifier si l'utilisateur a accès à la page demandée
$user = User::where('email', $request->input('email'))->first();
if (!$user) {
return redirect()->back()->withErrors(['Email ou mot de passe incorrect.']);
}
Auth::login($user);
return redirect()->intended($this->redirectTo);
}
}
Traite RegistersUsers
La traite RegistersUsers est responsable de gérer les étapes d’enregistrement des utilisateurs. Elle fournit les méthodes suivantes :
showRegistrationForm(): affiche la vue d’inscriptionregister(): enregistre un nouveau utilisateur avec les informations fourniesredirectPath(): définit l’emplacement où l’utilisateur sera redirigé après inscription
Exemple :
// app/Traits/RegistersUsers.php
use Illuminate\Http\Request;
use App\User;
trait RegistersUsers
{
public function showRegistrationForm()
{
return view('auth.register');
}
public function register(Request $request)
{
// Enregistrer un nouveau utilisateur avec les informations fournies
User::create([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => Hash::make($request->input('password')),
]);
return redirect()->intended($this->redirectPath());
}
public function redirectPath()
{
if (auth()->check()) {
return '/home';
} else {
return '/register';
}
}
}
Traite AuthenticatesUsers
La traite AuthenticatesUsers est responsable de gérer les étapes de connexion des utilisateurs. Elle fournit les méthodes suivantes :
showLoginForm(): affiche la vue de connexionlogin(): vérifie si l’utilisateur a accès à la page demandée et le connecte si nécessairethrottleLogins(): limite le nombre d’essais de connexion pour un utilisateur
Exemple :
// app/Traits/AuthenticatesUsers.php
use Illuminate\Http\Request;
use App\User;
trait AuthenticatesUsers
{
public function showLoginForm()
{
return view('auth.login');
}
public function login(Request $request)
{
// Vérifier si l'utilisateur a accès à la page demandée
$user = User::where('email', $request->input('email'))->first();
if (!$user) {
return redirect()->back()->withErrors(['Email ou mot de passe incorrect.']);
}
Auth::login($user);
return redirect()->intended($this->redirectTo);
}
public function throttleLogins(Request $request)
{
// Limite le nombre d'essais de connexion pour un utilisateur
if ($request->input('email') == 'user@example.com') {
return redirect()->back()->withErrors(['Trop d\'essais de connexion.']);
}
}
}
Conclusion
Dans cette partie, nous avons vu comment utiliser les contrôleurs Auth de Laravel pour authentifier les utilisateurs et gérer leur connexion. Nous avons également vu comment créer un système d’authentification complet avec Laravel en utilisant les traite RegistersUsers et AuthenticatesUsers. Il est important de noter que cette partie est une introduction à l’authentification des utilisateurs avec Laravel, et qu’il existe de nombreuses autres fonctionnalités et paramètres à prendre en compte pour créer un système d’authentification robuste.
Prochaines étapes
- Créer un système d’autorisation pour les utilisateurs
- Configurer l’authentification des utilisateurs avec un fournisseur d’identité externe
- Utiliser les fonctionnalités de sécurité de Laravel, telles que la ratelimitation et la validation des données.
In-Article Ad
Dev Mode
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Commentaires sur le développement d'API avec Laravel : les m
Voici une proposition de méta-description pour votre article : "Découvrez les meilleures pratiques pour créer des applications Laravel performantes avec nos co
Autorisation Laravel : Gates, Policies et directives Blade pour controler l'acces
Guide complet sur l'autorisation Laravel : Gates, Policies, directives Blade @can/@cannot et protection des ressources de votre application.
Laravel et API : Comment les Assertions et l'Authentificatio
Here's a meta description that meets the requirements: "Découvrez comment interagir avec vos applications Laravel depuis la ligne de commande et optimisez vos