


Développement Laravel : Comment simplifier l'authentification OAuth2 avec Laravel Passport ?
Jun 13, 2023 am 10:33 AMAvec la popularité des applications Web, OAuth2 est devenu l'un des protocoles d'authentification les plus populaires. OAuth2 offre aux utilisateurs un accès sécurisé et rapide via des jetons d'autorisation pour accéder aux ressources protégées.
Laravel est un framework d'application Web PHP populaire qui est devenu le premier choix des développeurs Web. Il possède des fonctionnalités puissantes et une syntaxe simple pour aider les développeurs Web à créer rapidement des applications Web de haute qualité. Laravel Passport est une implémentation OAuth2 très puissante dans Laravel, qui peut aider les développeurs à simplifier l'authentification OAuth2. Dans cet article, nous explorerons comment implémenter l'authentification OAuth2 à l'aide de Laravel Passport.
Introduction à Laravel Passport
Laravel Passport est une implémentation de serveur OAuth2 dans Laravel. Il peut aider les développeurs à créer rapidement des serveurs OAuth2 et à simplifier le processus d'authentification OAuth2. Il fournit non seulement une implémentation de la norme native OAuth2, mais fournit également des services tels que des clés API, des informations d'identification client et des jetons d'accès. Laravel Passport fournit également une série d'API pour gérer les clients, les clés et les jetons, et peut être parfaitement intégré au système d'authentification des utilisateurs de Laravel.
Utiliser Laravel Passport
L'installation de Laravel Passport est très simple et peut être réalisée à l'aide de Composer. Accédez au répertoire de votre application Laravel dans le terminal et entrez la commande suivante :
composer require laravel/passport
Ensuite, nous devons exécuter la commande d'installation de Laravel Passport. Nous pouvons utiliser la commande Artisan passport:install
pour l'installer. Cette commande générera les migrations de bases de données nécessaires, certaines clés de chiffrement et un jeton d'accès à l'application. Nous pouvons exécuter directement la commande suivante?: passport:install
進(jìn)行安裝。該命令將生成必要的數(shù)據(jù)庫遷移、一些加密密鑰和應(yīng)用程序訪問令牌。我們可以直接運(yùn)行以下命令:
php artisan passport:install
在運(yùn)行該命令后,您應(yīng)該看到類似以下的輸出:
Encryption keys generated successfully. Client ID: 1 Client secret: 9CrrluKEDJ3xvTLyHoSz3g3b5W3H4EBvLIS1G3V5
以上輸出中的客戶端ID和客戶端秘鑰是您在應(yīng)用程序中注冊(cè)O(shè)Auth2客戶端所需的信息??蛻舳藨{證使客戶端能夠獲取用戶令牌并訪問您的API服務(wù)器。
現(xiàn)在,我們已經(jīng)安裝了Laravel Passport,接下來讓我們來看看如何使用它來實(shí)現(xiàn)OAuth2認(rèn)證。
生成API令牌
Laravel Passport提供了一個(gè)API令牌用于每個(gè)用戶,該令牌可用于訪問受保護(hù)的API端點(diǎn)。要生成API令牌,請(qǐng)使用以下代碼:
$user = AppModelsUser::find(1); $token = $user->createToken('MyApp')->accessToken;
在這個(gè)例子中,我們使用createToken
方法來生成API令牌。我們需要提供一個(gè)標(biāo)識(shí)字符串,以便在未來能夠識(shí)別令牌。此方法將返回一個(gè)AccessToken實(shí)例,我們可以使用accessToken
屬性來獲取令牌字符串。
要使用API令牌來訪問受保護(hù)的API端點(diǎn),我們需要將令牌附加到HTTP請(qǐng)求的頭中。使用以下代碼:
$request->header('Authorization', 'Bearer '.$accessToken);
在這個(gè)例子中,我們使用請(qǐng)求頭Authorization來提供API令牌,其中令牌字符串通常以前綴“Bearer”開頭。
在請(qǐng)求頭中添加API令牌后,您可以訪問受保護(hù)的API端點(diǎn),并且服務(wù)器將使用API令牌來進(jìn)行身份驗(yàn)證。
客戶端憑證
OAuth2客戶端憑證允許客戶端代表用戶從OAuth2服務(wù)器獲取訪問令牌。在Laravel Passport中,我們可以使用以下代碼來注冊(cè)O(shè)Auth2客戶端:
use LaravelPassportClient; $client = new Client; $client->name = 'MyApp'; $client->redirect = 'http://example.com/callback'; $client->save(); $client->createToken()->accessToken;
我們可以使用上述方法來創(chuàng)建OAuth2客戶端,并將客戶端ID和客戶端秘鑰用于獲取訪問令牌。
OAuth2授權(quán)碼
OAuth2授權(quán)碼是一種流程,允許用戶通過客戶端代表用戶請(qǐng)求OAuth2服務(wù)器獲取訪問令牌。Laravel Passport支持OAuth2授權(quán)碼流程,還提供了用于管理授權(quán)碼的API。例如,以下是如何創(chuàng)建OAuth2授權(quán)碼的示例:
use LaravelPassportPassport; use IlluminateHttpRequest; Route::get('/redirect', function (Request $request) { $query = http_build_query([ 'client_id' => 'client-id', 'redirect_uri' => 'http://example.com/callback', 'response_type' => 'code', 'scope' => '', ]); return redirect('http://example.com/oauth/authorize?'.$query); }); Route::get('/callback', function (Request $request) { $token = Request::create( 'http://example.com/oauth/token', 'POST', [ 'grant_type' => 'authorization_code', 'client_id' => 'client-id', 'client_secret' => 'client-secret', 'redirect_uri' => 'http://example.com/callback', 'code' => $request->code, ] ); $response = Route::dispatch($token); return json_decode((string) $response->getContent(), true); })->name('callback');
在上面的代碼中,我們首先使用http_build_query
rrreee
rrreee
L'ID client et le secret client dans la sortie ci-dessus sont les clients OAuth2 que vous avez enregistrés dans les informations requises de votre application. . Les informations d'identification du client permettent au client d'obtenir un jeton utilisateur et d'accéder à votre serveur API. Maintenant que Laravel Passport est installé, voyons comment l'utiliser pour implémenter l'authentification OAuth2. ????Générer un jeton API????Laravel Passport fournit un jeton API pour chaque utilisateur, qui peut être utilisé pour accéder aux points de terminaison API protégés. Pour générer un jeton API, utilisez le code suivant : ??rrreee?? Dans cet exemple, nous utilisons la méthodecreateToken
pour générer le jeton API. Nous devons fournir une cha?ne d'identification afin que le jeton puisse être identifié à l'avenir. Cette méthode renverra une instance AccessToken et nous pourrons utiliser l'attribut accessToken
pour obtenir la cha?ne du jeton. ????Pour utiliser un jeton API pour accéder à un point de terminaison API protégé, nous devons ajouter le jeton à l'en-tête de la requête HTTP. Utilisez le code suivant?: ??rrreee?? Dans cet exemple, nous utilisons l'en-tête de requête Authorization pour fournir le jeton API, où la cha?ne du jeton commence généralement par le préfixe "Bearer". ????Après avoir ajouté le jeton API dans l'en-tête de la requête, vous pouvez accéder au point de terminaison API protégé et le serveur utilisera le jeton API pour s'authentifier. ????Identifiants client????Les informations d'identification du client OAuth2 permettent au client d'obtenir un jeton d'accès du serveur OAuth2 au nom de l'utilisateur. Dans Laravel Passport, nous pouvons utiliser le code suivant pour enregistrer le client OAuth2?: ??rrreee?? Nous pouvons utiliser la méthode ci-dessus pour créer le client OAuth2 et utiliser l'ID client et le secret client pour obtenir le jeton d'accès. ????Code d'autorisation OAuth2????Le code d'autorisation OAuth2 est un processus qui permet à un utilisateur de demander un serveur OAuth2 au nom de l'utilisateur via le client pour obtenir un jeton d'accès. Laravel Passport prend en charge le processus de code d'autorisation OAuth2 et fournit également une API pour gérer les codes d'autorisation. Par exemple, voici un exemple de création d'un code d'autorisation OAuth2?: ??rrreee?? Dans le code ci-dessus, nous utilisons d'abord la fonction http_build_query
pour générer la cha?ne de requête à transmettre au serveur OAuth2. Nous redirigeons ensuite vers le serveur OAuth2 et passons la cha?ne de requête en paramètre. Lorsque l'utilisateur l'autorise, le serveur OAuth2 sera redirigé vers notre application. Dans notre route de rappel, nous générons un jeton d'accès pour une utilisation future pour accéder au point de terminaison de l'API protégé. ????Conclusion????Dans cet article, nous avons appris comment utiliser Laravel Passport pour simplifier le processus d'authentification OAuth2. Nous avons appris à générer des jetons API, à configurer les informations d'identification du client et à implémenter le flux de code d'autorisation OAuth2. Laravel Passport fournit une API facile à comprendre qui nous permet de mettre en ?uvre rapidement une authentification OAuth2 sécurisée. Si vous souhaitez l'authentification OAuth2 dans votre application Laravel, alors Laravel Passport sera votre solution préférée. ??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

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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)

Il existe trois fa?ons principales de définir des variables d'environnement dans PHP: 1. Configuration globale via Php.ini; 2. Passé via un serveur Web (tel que setenv d'Apache ou Fastcgi_param de Nginx); 3. Utilisez la fonction PUTENV () dans les scripts PHP. Parmi eux, PHP.ini convient aux configurations globales et modifiées, la configuration du serveur Web convient aux scénarios qui doivent être isolés et PUTENV () convient aux variables temporaires. Les stratégies de persistance incluent des fichiers de configuration (tels que PHP.ini ou la configuration du serveur Web), les fichiers .env sont chargés de bibliothèque Dotenv et l'injection dynamique de variables dans les processus CI / CD. Les informations sensibles à la gestion de la sécurité doivent être évitées à code dur et il est recommandé de l'utiliser.

Le cache de configuration de Laravel améliore les performances en fusionnant tous les fichiers de configuration dans un seul fichier de cache. L'activation du cache de configuration dans un environnement de production peut réduire les opérations d'E / S et l'analyse de fichiers sur chaque demande, accélérant ainsi le chargement de configuration; 1. Il doit être activé lorsque l'application est déployée, la configuration est stable et aucune modification fréquente n'est requise; 2. Après l'activation, modifiez la configuration, vous devez ré-para?tre phpartisanconfig: cache pour prendre effet; 3. évitez d'utiliser une logique dynamique ou des fermetures qui dépendent des conditions d'exécution dans le fichier de configuration; 4. Lors du dépannage des problèmes, vous devez d'abord effacer le cache, vérifiez les variables .env et re-cache.

Pour permettre aux conteneurs PHP de prendre en charge la construction automatique, le noyau réside dans la configuration du processus d'intégration continue (CI). 1. Utilisez Dockerfile pour définir l'environnement PHP, y compris l'image de base, l'installation d'extension, la gestion de la dépendance et les paramètres d'autorisation; 2. Configurez des outils CI / CD tels que GitLabci et définissez les étapes de construction, de test et de déploiement via le fichier .gitlab-ci.yml pour réaliser une construction, un test et un déploiement automatique; 3. Intégrer des cadres de test tels que PHPUnit pour s'assurer que les tests sont automatiquement exécutés après les modifications du code; 4. Utiliser des stratégies de déploiement automatisées telles que Kubernetes pour définir la configuration de déploiement via le fichier de déploiement.yaml; 5. Optimiser Dockerfile et adopter une construction en plusieurs étapes

Les éloquents de Laravel sont un outil qui résume la logique de requête commune, divisée en portée locale et en portée mondiale. 1. La portée locale est définie avec une méthode commen?ant par la portée et doit être appelée explicitement, comme POST :: publiée (); 2. La portée globale est automatiquement appliquée à toutes les requêtes, souvent utilisées pour la suppression douce ou les systèmes multi-locataires, et l'interface de portée doit être implémentée et enregistrée dans le modèle; 3. La portée peut être équipée de paramètres, tels que le filtrage des articles par année ou par mois, et les paramètres correspondants sont passés lors de l'appel; 4. Faites attention aux spécifications de dénomination, aux appels de cha?ne, à la désactivation temporaire et à l'expansion de la combinaison lors de l'utilisation pour améliorer la clarté du code et la réutilisabilité.

Createahelpers.phpfileinApp / whetters withcustomfonctions likeformatprice, isactiveroute, andisadmin.2.addthefiletothe "fichiers" sectionofcomposer.jsonunderautoload.3.runcomposerdump-autoloadtomakethfunctionsgloballyavailable.4.usethhelperfunctions

Sélectionnez la méthode de journalisation: au stade précoce, vous pouvez utiliser l'erreur intégrée_log () pour PHP. Une fois le projet élargi, assurez-vous de passer à des bibliothèques matures telles que Monolog, prendre en charge plusieurs gestionnaires et niveaux de journal et assurez-vous que le journal contient des horodatages, des niveaux, des numéros de ligne de fichiers et des détails d'erreur; 2. Structure de stockage de conception: une petite quantité de journaux peut être stockée dans des fichiers, et s'il existe un grand nombre de journaux, sélectionnez une base de données s'il existe un grand nombre d'analyses. Utilisez MySQL / PostgreSQL sur des données structurées. Elasticsearch Kibana est recommandé pour semi-structuré / non structuré. Dans le même temps, il est formulé pour les stratégies de sauvegarde et de nettoyage régulières; 3. Interface de développement et d'analyse: il devrait avoir des fonctions de recherche, de filtrage, d'agrégation et de visualisation. Il peut être directement intégré à Kibana ou utiliser la bibliothèque du graphique Framework PHP pour développer l'auto-développement, en se concentrant sur la simplicité et la facilité d'interface.

Créer un tableau de références pour enregistrer les relations de recommandation, y compris les références, les références, les codes de recommandation et le temps d'utilisation; 2. Définir l'appartenance et les relations HasMany dans le modèle d'utilisateur pour gérer les données de recommandation; 3. Générer un code de recommandation unique lors de l'enregistrement (peut être implémenté via des événements modèles); 4. Capturez le code de recommandation en interrogeant les paramètres lors de l'enregistrement, établissez une relation de recommandation après vérification et empêchez l'auto-recommandation; 5. Déclencher le mécanisme de récompense lorsque les utilisateurs recommandés terminent le comportement spécifié (ordre d'abonnement); 6. Générer des liens de recommandation partageables et utiliser les URL de signature Laravel pour améliorer la sécurité; 7. Afficher les statistiques de recommandation sur le tableau de bord, telles que le nombre total de recommandations et de nombres convertis; Il est nécessaire de s'assurer que les contraintes de base de données, les séances ou les cookies sont persistées,

UseMockeryForcustomDependcesntencesBySettingExpectations withShouldReceive (). 2.UseLaravel’sfake () MethodForfacadesLikEmail, file d'attente, andhttptopReventReinteractions.3.replaceContainer-BoundServices with $ this-> mock () ForcLenersyntax.4.Usehtp
