Maison > cadre php > Swoole > Comment utiliser le framework Hyperf pour l'authentification des autorisations

Comment utiliser le framework Hyperf pour l'authentification des autorisations

WBOY
Libérer: 2023-10-20 19:31:46
original
707 Les gens l'ont consulté

Comment utiliser le framework Hyperf pour lauthentification des autorisations

Comment utiliser le framework Hyperf pour l'authentification des autorisations

Introduction :
Dans une application Web, l'authentification des autorisations est une fonction très importante. Grâce à l'authentification des autorisations, nous pouvons restreindre certains utilisateurs à accéder uniquement à des ressources et fonctions spécifiques, et protéger les données sensibles contre l'accès par des utilisateurs non autorisés. Cet article explique comment utiliser le framework Hyperf pour l'authentification des autorisations et donne des exemples de code spécifiques.

1. Configurer la table des autorisations et la table des rôles
Avant de commencer à utiliser le framework Hyperf pour l'authentification des autorisations, nous devons d'abord configurer la table des autorisations et la table des rôles. Ouvrez le fichier .env dans le projet, ajoutez la configuration suivante :

# 权限表
PERMISSION_TABLE=admin_permissions

# 角色表
ROLE_TABLE=admin_roles
Copier après la connexion

Créez ensuite la table correspondante dans la base de données.

2. Définir un middleware d'autorisation
Le framework Hyperf fournit un mécanisme middleware qui peut effectuer certaines opérations avant et après le traitement des demandes. Nous pouvons utiliser un middleware pour l'authentification des autorisations. Tout d'abord, créez un nouveau fichier AuthMiddleware.php dans le répertoire app/Middleware avec le code suivant :

<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfHttpServerContractRequestInterface;
use HyperfHttpServerContractResponseInterface;
use HyperfHttpServerRouterDispatched;
use PsrContainerContainerInterface;
use HyperfLoggerLoggerFactory;
use HyperfCircuitBreakerAnnotationCircuitBreaker;

class AuthMiddleware
{
    private $container;

    private $logger;

    public function __construct(ContainerInterface $container, LoggerFactory $loggerFactory)
    {
        $this->container = $container;
        $this->logger = $loggerFactory->get('auth');
    }

    /**
     * @param RequestInterface $request
     * @param ResponseInterface $response
     * @param callable $next
     * @return ResponseInterface
     */
    public function process(RequestInterface $request, callable $next): ResponseInterface
    {
        // 获取当前请求的控制器和方法
        $dispatched = $this->container->get(Dispatched::class);
        $controller = $dispatched->handler->callback[0];
        $action = $dispatched->handler->callback[1];

        // 进行权限认证
        $isAuth = $this->checkPermission($controller, $action);

        if (!$isAuth) {
            // 权限不足,返回错误提示
            return $response->json(['code' => 403, 'message' => 'Permission Denied']);
        }

        // 继续执行下一个中间件
        return $next($request);
    }

    /**
     * @param $controller
     * @param $action
     * @return bool
     */
    protected function checkPermission($controller, $action): bool
    {
        // 根据控制器和方法查询需要的权限,校验用户是否拥有该权限
        // 省略代码,根据具体业务逻辑进行处理

        return true; // 此处返回true表示权限校验通过
    }
}
Copier après la connexion

3. Enregistrez le middleware
Ouvrez le fichier config/autoload/middlewares.php et ajoutez la configuration suivante :

<?php

declare(strict_types=1);

return [
    // ...
    
    'auth' => AppMiddlewareAuthMiddleware::class,
];
Copier après la connexion

4. Utilisez middleware
Dans la configuration du routage, nous pouvons utiliser un middleware pour l'authentification des autorisations. Par exemple :

<?php

declare(strict_types=1);

use HyperfHttpServerRouterRouter;

// 不需要登录的接口
Router::group([
    'middleware' => [],
], function () {
    // ...
});

// 需要登录但是不需要认证权限的接口
Router::group([
    'middleware' => [
        AppMiddlewareAuthMiddleware::class,
    ],
], function () {
    // ...
});

// 需要认证权限的接口
Router::group([
    'middleware' => [
        AppMiddlewareAuthMiddleware::class,
    ],
], function () {
    // ...
});
Copier après la connexion

Résumé :
Utiliser le framework Hyperf pour l'authentification des autorisations est très simple. Il suffit de définir un middleware AuthMiddleware puis de l'utiliser dans la configuration du routage. Lorsque la requête atteint le middleware, notre logique d'authentification d'autorisation personnalisée sera exécutée. Si la vérification des autorisations échoue, le message d'erreur correspondant peut être renvoyé. De cette façon, nous pouvons facilement implémenter la fonction de contrôle des autorisations.

Lien de référence :

  1. Documentation officielle Hyperf : https://hyperf.wiki/2.2/#/zh-cn/middleware/middleware?id=Middleware Registration

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!

Étiquettes associées:
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