andydefer / jwt
A JWT authentication package for Laravel with support for multi-device login.
Requires
- php: ^8.1
- illuminate/routing: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- ramsey/uuid: ^4.0
- tymon/jwt-auth: ^2.0
Requires (Dev)
- phpunit/phpunit: ^9.0|^10.0
README
Un package d'authentification JWT pour Laravel, conçu pour gérer l'authentification sans session et le déploiement sur plusieurs appareils. Il s'intègre parfaitement avec des applications React/Inertia.js et le package front-end andydefer-jwt
.
Table des matières
Installation
La méthode préférée pour installer ce package est d'utiliser Composer.
-
Ajoutez le package à votre projet Laravel :
composer require andydefer/jwt
-
Ajoutez le middleware du package à votre fichier
app/Http/Kernel.php
pour le groupe de routesapi
.protected $middlewareGroups = [ 'api' => [ // ... autres middlewares \AndyDefer\Jwt\Middleware\JwtAuthMiddleware::class, ], ];
Note : Le package enregistre automatiquement le middleware avec l'alias
jwt.auth
, mais cette étape garantit qu'il est appliqué à toutes vos routes d'API. -
Lancez les migrations pour créer la table
jwt_auth
:php artisan migrate
-
Publiez les routes du package. Elles seront ajoutées à votre fichier
routes/api.php
.php artisan vendor:publish --provider="AndyDefer\Jwt\JwtAuthServiceProvider" --tag="routes"
Configuration
Le package fonctionne de manière préconfigurée avec les routes d'API suivantes :
POST /api/jwt/register
POST /api/jwt/login
GET /api/jwt/token
POST /api/jwt/logout
POST /api/jwt/refresh
GET /api/jwt/user
POST /api/jwt/verify-signature
Vous pouvez personnaliser le préfixe de ces routes en modifiant le Service Provider.
Utilisation
Le package gère l'ensemble du flux d'authentification JWT pour votre backend, y compris la génération de paires de clés RSA pour les communications sécurisées entre les appareils.
Authentification
Les utilisateurs peuvent s'authentifier via les endpoints suivants :
POST /api/jwt/register
: Enregistre un nouvel utilisateur et émet un token JWT.- Paramètres :
name
,email
,password
,password_confirmation
,device_id
(optionnel)
- Paramètres :
POST /api/jwt/login
: Authentifie un utilisateur existant et émet un token JWT.- Paramètres :
email
,password
,device_id
(optionnel)
- Paramètres :
GET /api/jwt/token
: Génère un token JWT pour un utilisateur déjà authentifié via la session Laravel (utile pour les premières requêtes depuis une application Inertia.js).
Gestion des tokens
POST /api/jwt/logout
: Invalide le token JWT actuel.POST /api/jwt/refresh
: Invalide le token actuel et en émet un nouveau.GET /api/jwt/user
: Récupère les informations de l'utilisateur authentifié.POST /api/jwt/verify-signature
: Vérifie la signature d'une requête client pour des communications ultra-sécurisées.
Intégration Front-end avec React
Ce package a été conçu pour être utilisé en tandem avec son homologue front-end, le package NPM andydefer-jwt
.
Le package front-end utilise axios
pour communiquer avec les endpoints d'API fournis par ce package Laravel, simplifiant la gestion de l'état d'authentification dans vos applications React/Inertia.js.
Exemple de Configuration axios
Assurez-vous que votre application front-end est configurée pour pointer vers les endpoints de ce package :
import axios from 'axios'; // Remplacez par l'URL de votre application Laravel axios.defaults.baseURL = 'https://mon-domaine-laravel.com/api/jwt'; axios.defaults.withCredentials = true;
Continuez à développer avec des outils d'authentification solides et fiables !