


Meilleures pratiques pour les fonctions d'autorisations Laravel?: comment implémenter la mise en cache des autorisations et l'optimisation des performances
Nov 02, 2023 am 09:47 AMMeilleures pratiques pour les fonctionnalités d'autorisations de Laravel?: Comment implémenter la mise en cache des autorisations et l'optimisation des performances
Introduction?:
La gestion des autorisations fait partie intégrante de nombreuses applications Web. La fonctionnalité d'autorisations du framework Laravel est très puissante et facile à utiliser, mais les performances peuvent être affectées lorsque vous traitez un grand nombre d'autorisations. Cet article présentera quelques bonnes pratiques pour vous aider à optimiser la fonctionnalité d'autorisations dans votre application Laravel et à implémenter la mise en cache des autorisations pour améliorer les performances.
1. L'importance de la mise en cache des autorisations
Pour de nombreuses applications, la vérification des autorisations est une opération qui doit être effectuée dans chaque requête. Lorsqu'il s'agit de nombreuses vérifications d'autorisations, interroger la base de données à chaque fois peut entra?ner une dégradation des performances de votre application. Par conséquent, utiliser un cache pour stocker les données d’autorisation serait un choix judicieux.
Dans Laravel, nous pouvons utiliser le pilote de cache pour stocker les données d'autorisation et lire les données du cache en cas de besoin. Vous trouverez ci-dessous un exemple de code qui montre comment utiliser la fonction de mise en cache de Laravel pour implémenter la mise en cache des autorisations?:
public function getPermissions() { return Cache::remember('permissions', 60, function () { return DB::table('permissions')->get(); }); }
Dans l'exemple ci-dessus, nous utilisons la classe de fa?ade Cache
de Laravel pour stocker et obtenir les données d'autorisation. La méthode remember
accepte trois paramètres?: le nom de la clé de cache, le délai d'expiration (en minutes) et une fonction anonyme utilisée pour obtenir les données d'autorisation de la base de données. Si les données de cette clé existent dans le cache, elles sont obtenues directement du cache, sinon la fonction anonyme est exécutée et le résultat est stocké dans le cache. Cache
門(mén)面類(lèi)來(lái)存儲(chǔ)和獲取權(quán)限數(shù)據(jù)。remember
方法接受三個(gè)參數(shù):緩存鍵名、過(guò)期時(shí)間(單位為分鐘)和一個(gè)匿名函數(shù),用于從數(shù)據(jù)庫(kù)中獲取權(quán)限數(shù)據(jù)。如果緩存中存在該鍵的數(shù)據(jù),則直接從緩存中獲取,否則執(zhí)行匿名函數(shù)并將結(jié)果存入緩存。
二、優(yōu)化權(quán)限檢查的性能
除了使用權(quán)限緩存外,我們還可以通過(guò)一些技巧來(lái)優(yōu)化權(quán)限檢查的性能。下面是一些優(yōu)化權(quán)限檢查的建議:
- 使用中間件:
Laravel提供了中間件機(jī)制,在處理請(qǐng)求之前進(jìn)行一些操作。我們可以創(chuàng)建一個(gè)自定義中間件,在其中進(jìn)行權(quán)限檢查,避免重復(fù)的權(quán)限檢查代碼。下面是一個(gè)示例代碼,演示了如何使用中間件來(lái)檢查用戶(hù)是否有訪(fǎng)問(wèn)特定路由的權(quán)限:
public function handle($request, Closure $next, $permission) { if (!auth()->user()->hasPermission($permission)) { abort(403, 'Unauthorized'); } return $next($request); }
在上面的示例中,我們通過(guò)hasPermission
方法檢查當(dāng)前用戶(hù)是否具有所需的權(quán)限。如果用戶(hù)沒(méi)有權(quán)限,則中間件會(huì)返回HTTP 403錯(cuò)誤。
- 權(quán)限緩存預(yù)加載:
為了進(jìn)一步提高性能,我們可以在應(yīng)用程序啟動(dòng)時(shí)預(yù)先加載權(quán)限緩存??梢栽?code>AppServiceProvider的boot
方法中實(shí)現(xiàn)此操作:
use IlluminateSupportFacadesCache; use IlluminateSupportFacadesDB; public function boot() { $permissions = DB::table('permissions')->get(); Cache::put('permissions', $permissions, 60); }
在上面的示例中,我們通過(guò)DB
門(mén)面類(lèi)從數(shù)據(jù)庫(kù)中獲取權(quán)限數(shù)據(jù),并將其存入緩存。
- 使用Eager Loading:
如果您的權(quán)限模型與其他模型之間存在關(guān)聯(lián)關(guān)系,您可以使用Laravel的Eager Loading特性來(lái)優(yōu)化權(quán)限檢查。通過(guò)預(yù)加載相關(guān)的模型,可以減少數(shù)據(jù)庫(kù)查詢(xún)次數(shù),提高性能。下面是一個(gè)示例代碼,展示了使用Eager Loading進(jìn)行權(quán)限檢查:
$user = User::with('permissions')->find(1); if ($user->permissions->contains('name', 'manage_users')) { // 用戶(hù)具有管理用戶(hù)的權(quán)限 }
在上面的示例中,我們使用with
方法預(yù)加載用戶(hù)的權(quán)限關(guān)聯(lián),并使用contains
En plus d'utiliser le cache d'autorisations, nous pouvons également utiliser certaines techniques pour optimiser les performances des contr?les d'autorisation. Voici quelques suggestions pour optimiser les contr?les d'autorisation?:
- Utiliser un middleware?: Laravel fournit un mécanisme middleware pour effectuer certaines opérations avant de traiter la requête. Nous pouvons créer un middleware personnalisé dans lequel la vérification des autorisations est effectuée pour éviter de dupliquer le code de vérification des autorisations. Voici un exemple de code qui montre comment utiliser un middleware pour vérifier si l'utilisateur a l'autorisation d'accéder à une route spécifique?:
Dans l'exemple ci-dessus, nous transmettons le hasPermission
méthode Vérifiez si l'utilisateur actuel dispose des autorisations requises. Si l'utilisateur n'a pas l'autorisation, le middleware renverra une erreur HTTP 403.
- Préchargement du cache d'autorisations?: ??Pour améliorer encore les performances, nous pouvons précharger le cache d'autorisations au démarrage de l'application. Ceci peut être réalisé dans la méthode
boot
deAppServiceProvider
?:
DB
La classe fa?ade obtient les données d'autorisation de la base de données et les stocke dans le cache. ??- Utiliser le chargement rapide?: ??Si votre modèle d'autorisation a une relation avec d'autres modèles, vous pouvez utiliser la fonctionnalité de chargement rapide de Laravel pour optimiser la vérification des autorisations. En préchargeant des modèles pertinents, le nombre de requêtes de base de données peut être réduit et les performances améliorées. Voici un exemple de code qui illustre la vérification des autorisations à l'aide d'Eager Loading?:
with
pour précharger l'association d'autorisations de l'utilisateur, et utilisons le Méthode contient
pour vérifier si vous disposez des autorisations requises. ????Conclusion?:???L'optimisation des performances des fonctions d'autorisation est un problème critique, en particulier lorsqu'il s'agit d'un grand nombre d'autorisations. Cet article explique comment améliorer les performances de la fonctionnalité d'autorisations dans votre application Laravel en utilisant la mise en cache des autorisations et quelques conseils d'optimisation. En mettant en ?uvre ces recommandations, vous pouvez mieux gérer et exploiter les puissantes fonctionnalités d'autorisations du framework Laravel. ????Pièce jointe?: les exemples contenus dans le code sont uniquement à des fins de démonstration et l'implémentation spécifique peut varier en fonction de votre application. Veuillez apporter les modifications et ajustements appropriés en fonction de la situation réelle. ??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)

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.

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

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

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,

CheckPhp> = 8.1, compositeur, etwebserver; 2.CloneOrCreateProjectAndrunCompoSeRinstall; 3.Copy.env.Exampleto.envandrunphPartisanKey : générer; 4.setDatabaseCredentialSin.envandrunphPartisanMigrate - Seed; 5.StartServerWithPhPartisansEserve; 6. Optionallyrunnpmins

Créer un fichier de semences: utilisez PhPartisanMake: SeeDerUserSederder pour générer la classe Seeder et insérer des données via la requête Model Factory ou Database dans la méthode d'exécution; 2. Appelez un autre Seeder dans DatabaseSeseder: enregistrez USERSEDEDER, POSTSEEDER, etc. dans l'ordre via $ this-> call () pour s'assurer que la dépendance est correcte; 3. Exécutez Seeder: Exécutez PHPARTISANDB: graines pour exécuter tous les semants enregistrés, ou utilisez du phpartisanMigrate: Fresh - Seed pour réinitialiser et remplir les données; 4

L'utilisation d'événements et d'auditeurs à Laravel est un moyen efficace de découpler la logique principale. 1. Créer des événements et les auditeurs peuvent être générés et liés à EventServiceProvider via la commande Artisan ou activer le mécanisme de découverte automatique. 2. Dans une utilisation réelle, il est nécessaire de noter qu'un événement peut correspondre à plusieurs auditeurs, une politique de réessayer la file d'attente, garder l'auditeur léger et enregistrer les abonnés de l'événement. 3. Pendant les tests et le débogage, vous devez confirmer le déclenchement de l'événement, la liaison de l'écoute et l'état du lecteur de file d'attente, et définir la queue_connection = Sync pour effectuer de manière synchrone pour faciliter le dépannage. 4. Les conseils avancés incluent le contr?le dynamique de l'exécution ou de l'enregistrement de l'auditeur en fonction des conditions, mais il est recommandé aux utilisateurs avancés. La ma?trise de ces points clés peut aider à améliorer le contr?le du code

Créer un nouveau projet Laravel et démarrer le service; 2. Générez le modèle, la migration et le contr?leur et exécuter la migration; 3. Définissez l'itinéraire RESTful dans les routes / api.php; 4. Implémentez la méthode d'addition, de suppression, de modification et de requête dans Post Controller et renvoyez la réponse JSON; 5. Utilisez Postman ou Curl pour tester la fonction API; 6. Ajouter éventuellement l'authentification de l'API via Sanctum; Enfin, obtenez une structure claire, Laravelrestapi complète et extensible, adaptée aux applications pratiques.
