Maison  >  Article  >  cadre php  >  Développement Laravel : Comment implémenter l'authentification APIOAuth2 à l'aide de Laravel Passport ?

Développement Laravel : Comment implémenter l'authentification APIOAuth2 à l'aide de Laravel Passport ?

WBOY
WBOYoriginal
2023-06-15 10:28:561199parcourir

Laravel est un framework PHP très populaire, facile à utiliser, hautement évolutif et doté d'une grande lisibilité du code. Laravel fournit également de nombreux packages complémentaires (Packages) pour implémenter diverses fonctions, notamment Laravel Passport, qui est un package API pour implémenter l'authentification OAuth2.

OAuth2 est un framework d'autorisation populaire qui simplifie le processus d'autorisation et est largement utilisé dans les applications Web et mobiles. Pour utiliser OAuth2, nous devons implémenter un serveur d'autorisation pour générer des jetons et permettre aux clients d'utiliser l'API. Laravel Passport nous offre un moyen simple d'implémenter l'authentification OAuth2.

Cet article explique comment utiliser Laravel Passport pour implémenter l'authentification OAuth2. Avant de commencer, on suppose que le framework Laravel est déjà installé.

Installer Laravel Passport

Vous pouvez utiliser Composer pour installer Laravel Passport. Exécutez la commande suivante dans le répertoire racine de votre application Laravel :

composer require laravel/passport

Une fois l'installation terminée, vous devez exécuter la commande suivante pour créer les tables nécessaires pour Laravel Passport :

php artisan migrate
# 🎜🎜# Prochaine exécution La commande suivante génère une clé de cryptage pour Laravel Passport :

php artisan passport:install

La clé générée sera utilisée pour crypter le jeton généré.

Set Passport

Après avoir terminé l'installation, vous devez configurer Laravel Passport dans l'application. Voici les étapes nécessaires :

Activer Passport. #🎜🎜 #

Pour activer Laravel Passport, vous devez d'abord appeler la méthode Passport::routes(). Cette méthode enregistrera les itinéraires nécessaires :

//在bootstrap/app.php文件中加入下面这行代码
LaravelPassportPassport::routes();

Activer l'actualisation automatique du jeton

Par défaut, le jeton expirera automatiquement après son expiration. Si vous souhaitez actualiser automatiquement les jetons après leur expiration, vous pouvez utiliser la méthode Passport::refreshTokensExpireIn() dans AuthServiceProvider. Nous ajoutons l'extrait de code suivant à AuthServiceProvider :

//在AppProvidersAuthServiceProvider.php文件中加入下面这段代码
use LaravelPassportPassport;

//其他代码...

public function boot()
{
    $this->registerPolicies();

    Passport::routes();

    Passport::tokensExpireIn(Carbon::now()->addDays(15));

    Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}

Dans cet exemple, la méthode tokensExpireIn() définit le délai d'expiration du jeton à 15 jours, et la méthode refreshTokensExpireIn La méthode () définit le délai d'expiration du jeton automatiquement actualisé à 30 jours.

Utilisation de Passport dans le modèle utilisateurtokensExpireIn()方法将令牌的过期时间设置为15天,而refreshTokensExpireIn()方法将自动刷新的令牌的到期时间设置为30天。

在User模型中使用Passport

现在需要在User模型中启用Laravel Passport功能。可以通过在User类上使用Passport::use()方法来实现:

//在app/User.php文件中加入下面这段代码
use LaravelPassportHasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

创建OAuth2客户端

在应用程序中使用OAuth2身份验证时,需要通过授权服务器来生成API令牌。为了与授权服务器通信,需要创建客户端。可以通过运行passport:client命令来创建客户端:

php artisan passport:client --password

运行此命令后,会提示输入应用程序名称,如果不想输入名称,则可以选择使用默认值,回车即可。

运行完成后,将会生成一个client_id和client_secret。client_id和client_secret将用于与授权服务器进行通信。

创建API路由

在创建OAuth2客户端后,需要创建API路由以使授权服务器可以访问API。

//在routes/api.php文件中加入以下代码
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

在这个例子中,通过使用auth:api

Vous devez maintenant activer la fonction Laravel Passport dans le modèle utilisateur. Ceci peut être réalisé en utilisant la méthode Passport::use() sur la classe User : serveur d'autorisation pour générer des jetons API. Afin de communiquer avec le serveur d'autorisation, un client doit être créé. Vous pouvez créer un client en exécutant la commande passport:client :

Authorization: Bearer [access_token]

Après avoir exécuté cette commande, vous serez invité à saisir le nom de l'application si vous ne le souhaitez pas. entrez un nom, vous pouvez choisir d'utiliser la valeur par défaut, appuyez simplement sur Entrée.

Une fois l'opération terminée, un client_id et un client_secret seront générés. client_id et client_secret seront utilisés pour communiquer avec le serveur d'autorisation.

Créer une route API

Après avoir créé le client OAuth2, vous devez créer une route API afin que le serveur d'autorisation puisse accéder à l'API.

rrreee

Dans cet exemple, l'authentification OAuth2 est requise pour la route spécifiée à l'aide du middleware auth:api. Si un jeton API valide n'est pas fourni, cette route renverra une réponse HTTP 401 non autorisée.

Envoyer une demande HTTP d'authentification #🎜🎜##🎜🎜#Vous êtes maintenant prêt à envoyer une demande à l'API et à vous authentifier à l'aide des informations d'identification OAuth2. #🎜🎜##🎜🎜# Vous pouvez utiliser des outils tels que Postman pour tester l'API. La requête doit contenir un jeton API valide. Dans Postman, il est possible d'inclure un entête Authorization dans la requête, par exemple : #🎜🎜#rrreee#🎜🎜#access_token doit être remplacé par le token généré précédemment. #🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜#Laravel Passport est un serveur OAuth2 facile à utiliser qui facilite la mise en œuvre de l'authentification API sans avoir à écrire beaucoup de code. Dans cet article, nous avons couvert les étapes de mise en œuvre de l'authentification OAuth2 à l'aide de Laravel Passport et montré comment créer un client OAuth2 et des routes API et s'authentifier via des requêtes HTTP. Si votre application doit utiliser l'authentification API, Laravel Passport peut être l'un des choix idéaux pour vous. #🎜🎜#

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:
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