Maison > cadre php > Laravel > le corps du texte

Comment utiliser la fonction d'autorisations de Laravel pour gérer les autorisations de l'interface API

王林
Libérer: 2023-11-04 13:23:03
original
1131 Les gens l'ont consulté

Comment utiliser la fonction dautorisations de Laravel pour gérer les autorisations de linterface API

Comment utiliser la fonction d'autorisation de Laravel pour gérer les autorisations de l'interface API

Introduction :
Avec le développement rapide des applications Web et des interfaces API, la nécessité d'une gestion des autorisations est devenue de plus en plus évidente. En tant que framework de développement PHP populaire, Laravel dispose de puissantes fonctions intégrées de gestion des autorisations, qui peuvent facilement gérer et contrôler les autorisations de l'interface API. Cet article expliquera en détail comment utiliser la fonction d'autorisation de Laravel pour gérer les autorisations de l'interface API et fournira des exemples de code pertinents.

1. Installez et configurez la fonction d'autorisation de Laravel :

  1. Tout d'abord, nous devons utiliser Composer pour installer le plug-in de gestion des autorisations de Laravel, Spatie-Permission. Exécutez la commande suivante dans le terminal pour installer le plug-in :

    composer require spatie/laravel-permission
    Copier après la connexion
  2. Une fois l'installation terminée, vous devez ajouter un ServiceProvider au tableau des fournisseurs dans le fichier config/app.php pour activer le plug-in. Ouvrez le fichier et ajoutez les lignes suivantes :

    'providers' => [
     // ...
     SpatiePermissionPermissionServiceProvider::class,
    ],
    Copier après la connexion
  3. Ensuite, exécutez les commandes suivantes dans le terminal pour publier le fichier de configuration du plugin et les fichiers de migration de base de données :

    php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider"
    Copier après la connexion
  4. Exécutez la commande de migration de base de données pour créer les autorisations requises liées tables :

    php artisan migrate
    Copier après la connexion
  5. Après avoir terminé les étapes ci-dessus, nous avons installé et configuré avec succès la fonction d'autorisations de Laravel.

2. Utilisez la fonction d'autorisation de Laravel pour gérer les autorisations de l'interface API :

  1. Créez des fichiers de routage liés aux interfaces API :
    Définissez nos routes d'interface API dans le fichier routes/api.php, par exemple :

    Route::middleware('auth:api')->group(function () {
     Route::get('/user', 'UserController@index')->name('api.user.index')->middleware('permission:view-users');
     Route::post('/user', 'UserController@store')->name('api.user.store')->middleware('permission:create-users');
     Route::put('/user/{id}', 'UserController@update')->name('api.user.update')->middleware('permission:update-users');
     Route::delete('/user/{id}', 'UserController@destroy')->name('api.user.destroy')->middleware('permission:delete-users');
    });
    Copier après la connexion

    Dans le Dans l'exemple ci-dessus, nous utilisons deux middlewares, auth:api est utilisé pour vérifier l'identité de l'utilisateur et permission:xxx est utilisé pour vérifier si l'utilisateur dispose des autorisations correspondantes. auth:api用于验证用户的身份,permission:xxx用于验证用户是否具有对应的权限。

  2. 在User模型中关联权限角色:
    在User模型中使用Laravel的HasRolestrait来关联权限角色。在app/User.php文件中添加以下行:

    use SpatiePermissionTraitsHasRoles;
    
    class User extends Authenticatable
    {
     use HasApiTokens, HasFactory, Notifiable, HasRoles;
     
     // ...
    }
    Copier après la connexion
  3. 在AuthServiceProvider中定义权限:
    在app/Providers/AuthServiceProvider.php文件的boot方法中,使用Laravel的Gate类定义API接口的权限。例如:

    use IlluminateContractsAuthAccessGate;
    
    class AuthServiceProvider extends ServiceProvider
    {
     public function boot(Gate $gate)
     {
         $this->registerPolicies();
         
         $gate->define('view-users', function ($user) {
             return $user->hasPermissionTo('view-users');
         });
    
         $gate->define('create-users', function ($user) {
             return $user->hasPermissionTo('create-users');
         });
    
         $gate->define('update-users', function ($user, $id) {
             return $user->hasPermissionTo('update-users') && $user->id === $id;
         });
    
         $gate->define('delete-users', function ($user, $id) {
             return $user->hasPermissionTo('delete-users') && $user->id === $id;
         });
     }
    }
    Copier après la connexion

    以上示例中,我们使用了Laravel的Gate类来定义权限。具体的权限名称可以根据实际需求进行定义和命名。

  4. 给用户分配权限:
    使用Laravel的assignRolesyncPermissions

    Associer des rôles d'autorisation dans le modèle Utilisateur :
  5. Utilisez le trait HasRoles de Laravel dans le modèle Utilisateur pour associer des rôles d'autorisation. Ajoutez les lignes suivantes dans le fichier app/User.php :
public function store(Request $request)
{
 // 创建用户...
 
 // 给用户分配角色
 $user->assignRole('admin');

 // 给用户分配权限
 $user->syncPermissions(['view-users', 'create-users', 'update-users', 'delete-users']);

 // ...
}
Copier après la connexion


Define permissions in the AuthServiceProvider : 🎜Dans la méthode boot du fichier app/Providers/AuthServiceProvider.php, utilisez le Gate définit les permissions de l'interface API. Par exemple : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons utilisé la classe Gate de Laravel pour définir les autorisations. Des noms d'autorisations spécifiques peuvent être définis et nommés en fonction des besoins réels. 🎜🎜🎜🎜Attribuer des autorisations aux utilisateurs : 🎜Utilisez les méthodes assignRole et syncPermissions de Laravel pour attribuer des autorisations aux utilisateurs. Par exemple, dans la méthode store du fichier UserController.php, nous pouvons attribuer des autorisations à l'utilisateur comme ceci : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons attribué à l'utilisateur un rôle nommé « admin » et attribué quatre autorisations au rôle. 🎜🎜🎜🎜 3. Résumé : 🎜Cet article explique comment utiliser la fonction d'autorisation de Laravel pour gérer les autorisations de l'interface API et fournit des exemples de code pertinents. En configurant et en utilisant la fonction d'autorisation de Laravel, nous pouvons facilement implémenter la gestion des autorisations et le contrôle des interfaces API. J'espère que cet article vous sera utile. 🎜

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal