Maison  >  Article  >  cadre php  >  Comment utiliser le middleware pour l'authentification API dans Laravel

Comment utiliser le middleware pour l'authentification API dans Laravel

WBOY
WBOYoriginal
2023-11-02 08:43:07976parcourir

Comment utiliser le middleware pour lauthentification API dans Laravel

Comment utiliser le middleware pour l'authentification API dans Laravel

Le middleware (Middleware) joue un rôle très important dans le framework Laravel. Il peut être utilisé pour exécuter une logique de code avant et après que la requête HTTP atteigne l'application. Lors du développement d'applications API, nous devons généralement authentifier les utilisateurs pour garantir que seuls les utilisateurs légitimes peuvent accéder aux données sensibles ou utiliser l'API.

Cet article expliquera comment utiliser le middleware pour l'authentification API. L'exemple spécifique est basé sur le framework Laravel. Nous mettrons en œuvre un schéma d'authentification de base par jeton pour protéger notre interface API.

Tout d'abord, nous devons créer un middleware pour vérifier le jeton. Exécutez la commande suivante pour créer un middleware nommé « ApiAuthMiddleware » :

php artisan make:middleware ApiAuthMiddleware

Après une opération réussie, vous verrez le fichier middleware généré dans le répertoire app/Http/Middleware.

Ensuite, implémentez la méthode Authenticate() dans ApiAuthMiddleware, qui vérifiera si le Token dans la requête est valide :

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateHttpRequest;

class ApiAuthMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        $token = $request->header('Authorization');

        if (!$token) {
            return response()->json(['message' => 'Token not provided'], 401);
        }

        // 这里可根据具体业务逻辑来验证Token的有效性,比如查询数据库或使用第三方服务进行验证

        if ($token !== 'valid_token') {
            return response()->json(['message' => 'Invalid Token'], 401);
        }

        // Token验证通过,继续执行请求
        return $next($request);
    }
}

Dans le code ci-dessus, nous obtenons d'abord le Token de l'en-tête de la requête, puis en fonction de l'entreprise spécifique logique Vérifier la validité du Token. Si le jeton n'existe pas ou si la validation échoue, une erreur 401 non autorisée est renvoyée ; sinon, nous transmettons la demande au prochain middleware ou gestionnaire de route.

Ensuite, nous devons enregistrer ApiAuthMiddleware en tant que middleware global afin que l'authentification par jeton se produise dans chaque requête API. Ajoutez le code suivant dans le tableau $routeMiddleware du fichier app/Http/Kernel.php :

protected $routeMiddleware = [
    // ...
    'api.auth' => AppHttpMiddlewareApiAuthMiddleware::class,
];

Dans le code ci-dessus, nous enregistrons ApiAuthMiddleware comme alias middleware 'api.auth'.

Nous pouvons désormais utiliser le middleware 'api.auth' dans les routes ou les méthodes de contrôleur qui nécessitent une authentification API. Voici un exemple :

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

class ApiController extends Controller
{
    public function __construct()
    {
        $this->middleware('api.auth');
    }

    public function getData(Request $request)
    {
        return response()->json(['message' => 'Authorized'], 200);
    }
}

Dans le code ci-dessus, nous utilisons la méthode middleware() dans le constructeur d'ApiController pour appliquer le middleware 'api.auth' à toutes les méthodes de ce contrôleur. Dans la méthode getData(), nous renvoyons un simple message de réussite d’autorisation.

Désormais, lorsque nous lancerons une requête GET vers "/api/data", la requête sera d'abord authentifiée par ApiAuthMiddleware. Si le jeton dans la demande est valide, un message d'autorisation réussie sera renvoyé ; sinon, une erreur 401 non autorisée sera renvoyée.

Résumé

En utilisant un middleware pour l'authentification API, nous pouvons facilement protéger notre interface API et autoriser uniquement les utilisateurs légitimes à y accéder. Dans cet article, nous avons appris comment créer et utiliser un middleware personnalisé pour vérifier la validité d'un jeton et l'enregistrer en tant que middleware global.

Bien sûr, ce n'est qu'un exemple basique, vous pouvez étendre et personnaliser la logique d'authentification en fonction des besoins de votre entreprise. Parallèlement, vous pouvez également utiliser d'autres types de méthodes d'authentification, telles que OAuth, JWT, etc. Les puissantes capacités middleware du framework Laravel fournissent une solution flexible et facilement extensible pour l'authentification 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