Maison cadre php Laravel 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 ?

Jun 13, 2023 pm 11:41 PM
laravel jwt passport

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
Copier après la connexion

Étape 2 : Configurez Laravel Passport

Dans le fichier config/app.php, ajoutez le fournisseur de services suivant :

'providers' => [
    ...
    LaravelPassportPassportServiceProvider::class,
],
Copier après la connexion

Ensuite, exécutez la commande suivante pour créer la table de données de Passport :

php artisan migrate
Copier après la connexion

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;
    ...
}
Copier après la connexion

Étape 3 : Configurez JWT

Tout d'abord, dans le fichier config/app.php, ajoutez le JWTServiceProvider :

'providers' => [
    ...
    TymonJWTAuthProvidersLaravelServiceProvider::class,
],
Copier après la connexion

Ensuite, exécutez la commande suivante pour générer le secret clé requise pour JWT :

php artisan jwt:secret
Copier après la connexion

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',
    ...
],
Copier après la connexion

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
    ]
],
Copier après la connexion

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();
});
Copier après la connexion

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);
});
Copier après la connexion

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');
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

PHP vs Flutter : le meilleur choix pour le développement mobile PHP vs Flutter : le meilleur choix pour le développement mobile May 06, 2024 pm 10:45 PM

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.

Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ? Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ? May 07, 2024 am 08:39 AM

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 - Commandes artisanales Laravel - Commandes artisanales Aug 27, 2024 am 10:51 AM

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 des avantages et inconvénients des outils de tests unitaires PHP Analyse des avantages et inconvénients des outils de tests unitaires PHP May 06, 2024 pm 10:51 PM

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é.

Comparaison des dernières versions de Laravel et CodeIgniter Comparaison des dernières versions de Laravel et CodeIgniter Jun 05, 2024 pm 05:29 PM

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.

Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Jun 01, 2024 pm 01:34 PM

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

Tests unitaires de code PHP et tests d'intégration Tests unitaires de code PHP et tests d'intégration May 07, 2024 am 08:00 AM

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.

Laravel vs CodeIgniter : quel framework est le meilleur pour les grands projets ? Laravel vs CodeIgniter : quel framework est le meilleur pour les grands projets ? Jun 04, 2024 am 09:09 AM

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.

See all articles