Maison >cadre php >Laravel >Développement Laravel : Comment implémenter l'authentification et l'autorisation API à l'aide de Laravel Sanctum ?

Développement Laravel : Comment implémenter l'authentification et l'autorisation API à l'aide de Laravel Sanctum ?

PHPz
PHPzoriginal
2023-06-13 19:07:182684parcourir

Laravel est un framework de développement Web PHP populaire qui fournit de nombreuses fonctionnalités et outils puissants pour simplifier le développement et la maintenance d'applications Web. Laravel Sanctum est un plugin pour le framework Laravel qui fournit des capacités d'authentification et d'autorisation API pour protéger facilement vos points de terminaison API contre tout accès non autorisé.

Dans cet article, nous apprendrons comment implémenter l'authentification et l'autorisation API à l'aide de Laravel Sanctum.

1. Qu'est-ce que le sanctuaire de Laravel ?

Laravel Sanctum est un package d'authentification léger qui fournit des fonctionnalités d'authentification et d'autorisation API simples mais puissantes. Il est basé sur le middleware Laravel et l'authentification HTTP, nous permettant d'attacher en toute sécurité des jetons d'authentification aux requêtes API.

Laravel Sanctum prend en charge deux méthodes d'authentification : l'authentification basée sur les cookies et l'authentification basée sur les jetons. L'authentification basée sur les cookies utilise le middleware Laravel pour vérifier qu'un cookie d'authentification valide est présent dans la demande. Une autre façon de vérifier le jeton dans l'en-tête de classe et de vérifier s'il est valide.

2. Installez Laravel Sanctum

Avant de commencer, nous devons d'abord installer Laravel Sanctum. Laravel Sanctum peut être facilement installé à l'aide du gestionnaire de packages composer :

composer require laravel/sanctum

Bien sûr, il peut également être installé manuellement en ajoutant les exigences suivantes dans le fichier composer.json :

{
  "require": {
    "laravel/sanctum": "^2.9"
  }
}

Une fois terminé, exécutez la commande suivante pour publier le Laravel Fichier de configuration Sanctum et fichier de migration de base de données :

php artisan vendor:publish --tag=sanctum-config
php artisan vendor:publish --tag=sanctum-migrations
php artisan migrate

3. Configurez Laravel Sanctum

  1. Tout d'abord, vous devez ajouter le middleware laravel/sanctum au cœur HTTP de votre application.

Modifiez le fichier app/Http/kernel.php et ajoutez le middleware Sanctum :

// app/Http/Kernel.php

protected $middleware = [
    // ...
    LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class,
];

protected $middlewareGroups = [
    'web' => [
        // ...
    ],

    'api' => [
        LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class,
        'throttle:api',
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],
];

Cela garantira que l'authentification basée sur les cookies de Sanctum pourra être utilisée lors de chaque demande.

  1. Ensuite, vous devez configurer le fichier de configuration d'authentification.

Ouvrez le fichier config/auth.php, recherchez les valeurs par défaut et les gardes et configurez-les pour utiliser sancttum.

// config/auth.php

'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
        'hash' => false,
    ],
],

Cela nous permettra d'utiliser Sanctum pour l'authentification basée sur des jetons.

  1. Ajouter un fournisseur Sanctum.

Si vous utilisez une nouvelle version de Laravel, vous n'avez pas besoin d'ajouter de fournisseur. Si vous utilisez une ancienne version, veuillez ouvrir le fichier config/app.php et ajouter la ligne suivante dans le tableau des fournisseurs :

LaravelSanctumSanctumServiceProvider::class,

IV Create Authorization Token

Maintenant que nous avons configuré Laravel Sanctum, nous allons en apprendre davantage. suivant Comment utiliser Sanctum pour créer des jetons d'autorisation.

  1. Une fois l'utilisateur connecté, créez un jeton API pour l'utilisateur dans le tableau des utilisateurs.
public function createToken(Request $request)
{
    $user = Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')]);

    if($user) {
        $token = $user->createToken('API Token')->plainTextToken;
        
        return response()->json([
          'token' => $token,
        ]);
    } else {
        return response()->json([
          'message' => 'Invalid credentials',
        ], 401);
    }
}
  1. Après avoir créé le jeton, vous pouvez l'ajouter à l'en-tête d'autorisation de chaque demande. Il peut être défini comme suit dans la requête axios :
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;

5. Implémenter l'authentification et l'autorisation de l'API

Après avoir créé le jeton d'autorisation, nous pouvons utiliser Sanctum pour protéger le point de terminaison de l'API contre tout accès non autorisé. Nous pouvons utiliser le middleware de routage Laravel pour vérifier le jeton d'authentification et refuser tout accès non autorisé.

  1. Tout d'abord, définissez la route API protégée dans le fichier api.php.
// routes/api.php

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

Cette route sera protégée à l'aide du middleware d'authentification Sanctum.

  1. Ensuite, accédez à l'itinéraire protégé et consultez les résultats. Cela peut être testé avec la commande suivante :
php artisan serve

Désormais, la route /api/user est accessible pour afficher les détails de l'utilisateur connecté. Désormais, sans l'en-tête Authorization, vous ne pourrez pas y accéder et renverrez un code d'état HTTP 401 Unauthorized.

6. Fin

Laravel Sanctum est une solution d'authentification et d'autorisation puissante et facile à utiliser qui peut facilement implémenter l'authentification et l'autorisation dans les applications Web et les API Web Laravel. Il protège facilement vos points de terminaison d'API contre tout accès non autorisé et vous permet de contrôler facilement quels utilisateurs peuvent accéder à quels points de terminaison d'API. Dans cet article, nous avons appris comment installer et configurer Laravel Sanctum et comment l'utiliser pour créer des jetons d'autorisation et implémenter l'authentification et l'autorisation API.

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