


Développement Laravel : Comment implémenter l'authentification API à l'aide de Laravel Passport et JWT ?
Développement Laravel : Comment implémenter l'authentification API à l'aide de Laravel Passport et JWT ?
L'authentification API (Application Programming Interface) est une exigence courante dans les applications Internet d'aujourd'hui. En tant que framework PHP populaire, Laravel fournit deux outils, Laravel Passport et JWT (JSON Web Tokens), qui peuvent nous aider à mettre en œuvre l'authentification API.
Cet article expliquera comment implémenter l'authentification API à l'aide de Laravel Passport et JWT. Dans le contenu suivant, nous comprendrons les concepts de base de ces deux outils et comment les configurer et les utiliser dans les applications Laravel.
Qu'est-ce que le passeport Laravel ?
Laravel Passport est un serveur OAuth2 spécialement développé pour le framework Laravel, qui peut nous aider à créer des systèmes d'authentification API rapidement et en toute sécurité. Passport fournit un ensemble d'API pour effectuer le processus d'authentification et a implémenté en interne une série de méthodes d'authentification spécifiées par le protocole OAuth2.
Parmi eux, OAuth2 est un protocole standard qui utilise l'autorisation proxy. L'autorisation proxy est un mécanisme d'autorisation permettant d'obtenir l'accès aux ressources au nom d'un utilisateur. Le protocole OAuth2 émet des « jetons d'accès » aux applications tierces pour accéder aux ressources protégées au nom de l'utilisateur. Par conséquent, Passport joue en réalité le rôle de serveur d’authentification OAuth2 dans les applications Laravel.
Qu'est-ce que JWT ?
JWT (JSON Web Tokens) est un standard ouvert (RFC 7519) pour l'authentification et l'autorisation dans les environnements réseau distribués. JWT est couramment utilisé pour transmettre des informations d'identité d'utilisateur authentifiées et des revendications entre clients et serveurs. JWT se compose de trois parties : en-tête, charge utile et signature.
Habituellement, l'en-tête contient le type de JWT et l'algorithme de cryptage utilisé, la charge utile contient des informations et des réclamations sur l'identité de l'utilisateur, et la signature est utilisée pour vérifier l'authenticité du JWT. Lors de l'utilisation de JWT pour l'authentification, le serveur détermine l'identité de l'utilisateur en déchiffrant les informations contenues dans le JWT, réalisant ainsi l'authentification API.
Configuration de Laravel Passport et JWT
Avant d'utiliser Laravel Passport et JWT pour l'authentification API, nous devons d'abord le configurer dans l'application Laravel. Voici les étapes de configuration spécifiques :
Étape 1 : Installez Laravel Passport et tymon/jwt-auth
Utilisez composer pour installer Laravel Passport et tymon/jwt-auth dans l'outil de ligne de commande :
composer require laravel/passport composer require tymon/jwt-auth
Étape 2 : Configurez Laravel Passport
Dans le fichier config/app.php, ajoutez le fournisseur de services suivant :
'providers' => [ ... LaravelPassportPassportServiceProvider::class, ],
Ensuite, exécutez la commande suivante pour créer la table de données de Passport :
php artisan migrate
Pour la méthode d'authentification par défaut de Passport "Password Grant", nous l'ajoutons dans le modèle utilisateur "PassportHasApiTokens" (trait d'authentification utilisateur par défaut de Passport). Ouvrez le fichier User.php et ajoutez le contenu suivant :
use LaravelPassportHasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; ... }
Étape 3 : Configurez JWT
Tout d'abord, dans le fichier config/app.php, ajoutez le JWTServiceProvider :
'providers' => [ ... TymonJWTAuthProvidersLaravelServiceProvider::class, ],
Ensuite, exécutez la commande suivante pour générer le secret clé requise pour JWT :
php artisan jwt:secret
Dans le fichier config/auth.php, ajoutez la configuration jwt guard (utilisez jwt comme option guard) et définissez le pilote d'authentification par défaut sur "jwt":
'guards' => [ ... 'jwt' => [ 'driver' => 'jwt', 'provider' => 'users' ], ], ... 'defaults' => [ 'guard' => 'jwt', ... ],
Dans le fichier config/auth .php, ajoutez la configuration des utilisateurs du fournisseur d'utilisateurs JWT (instruction d'utiliser le modèle Eloquent) :
'providers' => [ ... 'users' => [ 'driver' => 'eloquent', 'model' => AppModelsUser::class ] ],
Utilisation de Laravel Passport et JWT pour l'authentification API
Une fois la préparation terminée, nous pouvons volontiers implémenter l'authentification API à l'aide de Laravel Passport et JWT . Voici le processus de fonctionnement spécifique :
Étape 1 : Enregistrez la route API
Tout d'abord, enregistrez la route API dans le fichier routes/api.php. Par exemple, nous définissons une route GET pour obtenir des informations sur l'utilisateur :
Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
Le middleware auth:api de Laravel est utilisé ici, ce qui garantira que les requêtes des utilisateurs authentifiés peuvent passer. Avec le middleware de routage, nous ajoutons cette étape d'authentification à la route.
Étape 2 : Créer un jeton d'accès
Les utilisateurs doivent accéder à l'API via le jeton d'accès. Nous devons utiliser un mot de passe pour autoriser le jeton d'accès. Les étapes spécifiques de mise en œuvre sont les suivantes :
Vous devez d'abord définir un itinéraire pour recevoir le nom d'utilisateur et le mot de passe fournis par l'utilisateur :
Route::post('/login', function (Request $request) { $http = new GuzzleHttpClient; $response = $http->post('http://your-app.com/oauth/token', [ 'form_params' => [ 'grant_type' => 'password', 'client_id' => 'client-id', 'client_secret' => 'client-secret', 'username' => $request->username, 'password' => $request->password, 'scope' => '', ], ]); return json_decode((string) $response->getBody(), true); });
Dans le code ci-dessus, nous utilisons le client GuzzleHttp pour envoyer une requête POST et obtenir un jeton d'accès. Parmi eux, grant_type doit être "password", client_id et client_secret correspondent respectivement à l'ID et au Secret appliqués dans Laravel Passport. Une fois la demande réussie, une réponse JSON sera renvoyée contenant le jeton d'accès de l'utilisateur access_token pour accéder à l'API.
Étape 3 : Lancer une demande d'API
Nous pouvons utiliser le jeton access_token obtenu pour envoyer une demande à l'API, vérifier l'identité de l'utilisateur et obtenir des ressources protégées. Lorsque vous effectuez une requête à l'API, vous devez ajouter la paire clé-valeur d'autorisation dans l'en-tête, dont la valeur est "Bearer access_token". Par exemple :
$accessToken = 'your-access-token'; $response = $http->withHeaders([ 'Authorization' => 'Bearer ' . $accessToken ])->get('http://your-app.com/api/user');
Si la requête aboutit, l'API renverra les informations utilisateur.
Conclusion
Dans les applications Laravel, Laravel Passport fournit un puissant protocole d'authentification OAuth2 et une fonction d'authentification API, et JWT est une méthode d'authentification sûre et pratique. Dans le développement réel, nous pouvons utiliser Laravel Passport et JWT en combinaison pour améliorer la sécurité et la fiabilité de l'API et protéger les données des utilisateurs contre le vol ou la falsification par des attaquants malveillants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP et Flutter sont des technologies populaires pour le développement mobile. Flutter excelle dans les capacités multiplateformes, les performances et l'interface utilisateur, et convient aux applications qui nécessitent des performances élevées, une interface utilisateur multiplateforme et personnalisée. PHP convient aux applications côté serveur avec des performances inférieures et non multiplateformes.

Les opérations de base de données en PHP sont simplifiées à l'aide d'ORM, qui mappe les objets dans des bases de données relationnelles. EloquentORM dans Laravel vous permet d'interagir avec la base de données en utilisant une syntaxe orientée objet. Vous pouvez utiliser ORM en définissant des classes de modèle, en utilisant des méthodes Eloquent ou en créant un système de blog dans la pratique.

Laravel - Artisan Commands - Laravel 5.7 est livré avec une nouvelle façon de traiter et de tester de nouvelles commandes. Il inclut une nouvelle fonctionnalité de test des commandes artisanales et la démonstration est mentionnée ci-dessous ?

Analyse de l'outil de test unitaire PHP : PHPUnit : convient aux grands projets, fournit des fonctionnalités complètes et est facile à installer, mais peut être verbeux et lent. PHPUnitWrapper : adapté aux petits projets, facile à utiliser, optimisé pour Lumen/Laravel, mais a des fonctionnalités limitées, ne fournit pas d'analyse de couverture de code et dispose d'un support communautaire limité.

Les dernières versions de Laravel 9 et CodeIgniter 4 fournissent des fonctionnalités et des améliorations mises à jour. Laravel9 adopte l'architecture MVC et fournit des fonctions telles que la migration de bases de données, l'authentification et le moteur de modèles. CodeIgniter4 utilise l'architecture HMVC pour fournir le routage, l'ORM et la mise en cache. En termes de performances, le modèle de conception basé sur le fournisseur de services de Laravel9 et le framework léger de CodeIgniter4 lui confèrent d'excellentes performances. Dans les applications pratiques, Laravel9 convient aux projets complexes qui nécessitent de la flexibilité et des fonctions puissantes, tandis que CodeIgniter4 convient au développement rapide et aux petites applications.

Comparez les capacités de traitement des données de Laravel et CodeIgniter : ORM : Laravel utilise EloquentORM, qui fournit un mappage relationnel classe-objet, tandis que CodeIgniter utilise ActiveRecord pour représenter le modèle de base de données en tant que sous-classe de classes PHP. Générateur de requêtes : Laravel dispose d'une API de requêtes chaînées flexible, tandis que le générateur de requêtes de CodeIgniter est plus simple et basé sur des tableaux. Validation des données : Laravel fournit une classe Validator qui prend en charge les règles de validation personnalisées, tandis que CodeIgniter a moins de fonctions de validation intégrées et nécessite un codage manuel des règles personnalisées. Cas pratique : l'exemple d'enregistrement d'utilisateur montre Lar

Guide des tests unitaires et d'intégration PHP Tests unitaires : concentrez-vous sur une seule unité de code ou de fonction et utilisez PHPUnit pour créer des classes de cas de test à des fins de vérification. Tests d'intégration : faites attention à la façon dont plusieurs unités de code fonctionnent ensemble et utilisez les méthodes setUp() et TearDown() de PHPUnit pour configurer et nettoyer l'environnement de test. Cas pratique : utilisez PHPUnit pour effectuer des tests unitaires et d'intégration dans les applications Laravel, notamment la création de bases de données, le démarrage de serveurs et l'écriture de code de test.

Lors du choix d'un framework pour de grands projets, Laravel et CodeIgniter ont chacun leurs propres avantages. Laravel est conçu pour les applications d'entreprise, offrant une conception modulaire, une injection de dépendances et un ensemble de fonctionnalités puissantes. CodeIgniter est un framework léger plus adapté aux projets de petite et moyenne taille, mettant l'accent sur la rapidité et la facilité d'utilisation. Pour les grands projets avec des exigences complexes et un grand nombre d'utilisateurs, la puissance et l'évolutivité de Laravel sont plus adaptées. Pour les projets simples ou les situations avec des ressources limitées, les capacités de développement légères et rapides de CodeIgniter sont plus idéales.
