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é.
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:installLa clé générée sera utilisée pour crypter le jeton généré. Set PassportAprès avoir terminé l'installation, vous devez configurer Laravel Passport dans l'application. Voici les étapes nécessaires : Activer Passport. #🎜🎜 #
//在bootstrap/app.php文件中加入下面这行代码 LaravelPassportPassport::routes();
Activer l'actualisation automatique du jeton
//在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模型中启用Laravel Passport功能。可以通过在User类上使用Passport::use()方法来实现:
//在app/User.php文件中加入下面这段代码 use LaravelPassportHasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; }
在应用程序中使用OAuth2身份验证时,需要通过授权服务器来生成API令牌。为了与授权服务器通信,需要创建客户端。可以通过运行passport:client
命令来创建客户端:
php artisan passport:client --password
运行此命令后,会提示输入应用程序名称,如果不想输入名称,则可以选择使用默认值,回车即可。
运行完成后,将会生成一个client_id和client_secret。client_id和client_secret将用于与授权服务器进行通信。
在创建OAuth2客户端后,需要创建API路由以使授权服务器可以访问API。
//在routes/api.php文件中加入以下代码 Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
在这个例子中,通过使用auth:api
passport:client
: Authorization: Bearer [access_token]
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!