Authentification
Introduction​
L'authentification est un aspect essentiel de toute application web. Bow Framework fournit un système d'authentification flexible et facile à configurer, qui prend en charge deux méthodes principales : l'authentification par session et l'authentification par JWT (JSON Web Token). Cette documentation vous guidera étape par étape pour intégrer et personnaliser le système d'authentification dans votre application.
1. Configuration de l'authentification​
Bow Framework utilise un fichier de configuration pour gérer les différentes options d'authentification. Ce fichier se trouve dans config/auth.php. Vous y définissez les types d'authentification que vous souhaitez utiliser, ainsi que les paramètres associés (comme les modèles utilisateurs et les clés de connexion).
Exemple de configuration​
return [
// Définit le guard par défaut utilisé
'default' => 'web',
// Configuration du guard web (session)
'web' => [
'type' => 'session', // Authentification par session
'model' => \App\Models\User::class, // Modèle utilisateur
'credentials' => [
'username' => 'email', // Champ d'authentification
'password' => 'password' // Mot de passe
]
],
// Configuration du guard api (JWT)
'api' => [
'type' => 'jwt', // Authentification par JWT
'model' => \App\Models\User::class,
'credentials' => [
'username' => 'email',
'password' => 'password'
]
]
];
Dans cet exemple, vous avez deux types de "guards" : web pour les sessions classiques et api pour les API utilisant JWT.
2. Modèle d'authentification​
Votre modèle utilisateur doit implémenter l'interface d'authentification de Bow Framework. Cela se fait en étendant la classe Bow\Auth\Authentication dans votre modèle User.
Exemple :​
use Bow\Auth\Authentication;
class User extends Authentication
{
// Propriétés et méthodes de votre modèle
}
Cela permet à Bow Framework de gérer l'authentification de vos utilisateurs de manière transparente.
3. Utilisation de base​
Une fois votre configuration en place et votre modèle utilisateur configuré, vous pouvez commencer à utiliser le système d'authentification dans vos contrôleurs et routes.
Méthode guard​
Le système d'authentification de Bow Framework prend en charge plusieurs guards, qui sont des mécanismes distincts permettant de gérer l'authentification. Vous pouvez configurer plusieurs guards dans votre fichier config/auth.php (par exemple, un pour l'interface web et un autre pour les API).
La méthode guard permet de spécifier quel guard utiliser dans un contexte donné. Par défaut, le guard utilisé est celui défini dans la configuration (web), mais vous pouvez facilement spécifier un autre guard en fonction de vos besoins (par exemple, pour les API avec JWT).
Exemple d'utilisation de guard :​
// Authentifier un utilisateur en utilisant le guard 'web' (session)
Auth::guard('web')->attempts([
'email' => 'john@example.com',
'password' => 'secret'
]);
// Authentifier un utilisateur en utilisant le guard 'api' (JWT)
Auth::guard('api')->attempts([
'email' => 'john@example.com',
'password' => 'secret'
]);
Ici, Auth::guard('web') spécifie que nous voulons utiliser le guard web, qui est configuré pour l'authentification par session. Vous pouvez également remplacer 'web' par 'api' pour utiliser le guard configuré pour JWT. Vous pouvez aussi utiliser le helper app_auth.
Méthode attempts​
La méthode attempts est utilisée pour authentifier un utilisateur en vérifiant ses identifiants. Elle prend un tableau d'identifiants (souvent email et password) et retourne true si l'authentification est réussie, ou false si elle échoue.
- Elle est généralement utilisée lorsqu'un utilisateur soumet un formulaire de connexion.
- Elle peut être appelée sur un guard spécifique pour authentifier l'utilisateur en fonction de son contexte (par exemple, via JWT ou session).
Exemple d'utilisation de attempts :​
// Authentifier un utilisateur avec des identifiants
$credentials = [
'email' => 'john@example.com',
'password' => 'secret'
];
// Tentative d'authentification via le guard 'web'
if (Auth::guard('web')->attempts($credentials)) {
echo 'Authentification réussie via session';
} else {
echo 'Échec de l\'authentification';
}
Dans cet exemple, la méthode attempts essaie d'authentifier l'utilisateur avec les identifiants fournis. Si les informations sont correctes, l'utilisateur est authentifié, et une session est créée pour lui (dans le cas du guard web).
Méthode check​
La méthode check permet de vérifier si l'utilisateur est actuellement authentifié. Elle retourne true si un utilisateur est connecté (quel que soit le guard utilisé), et false sinon.
Exemple d'utilisation de check :​
// Vérifier si l'utilisateur est authentifié via le guard 'web'
if (Auth::guard('web')->check()) {
echo 'L\'utilisateur est authentifié';
} else {
echo 'Aucun utilisateur authentifié';
}
Cette méthode est très utile pour protéger des routes ou exécuter des actions en fonction de l'état d'authentification de l'utilisateur.