ホームページ >PHPフレームワーク >Swoole >権限認証に Hyperf フレームワークを使用する方法

権限認証に Hyperf フレームワークを使用する方法

WBOY
WBOYオリジナル
2023-10-20 19:31:46711ブラウズ

権限認証に Hyperf フレームワークを使用する方法

Hyperf フレームワークを使用して権限認証を行う方法

はじめに:
Web アプリケーションでは、権限認証は非常に重要な機能です。権限認証により、特定のユーザーが特定のリソースや機能にのみアクセスできるように制限し、権限のないユーザーによる機密データのアクセスを保護できます。この記事では、Hyperf フレームワークを使用して権限認証を行う方法と、具体的なコード例を紹介します。

1. 権限テーブルとロール テーブルを構成する
権限認証に Hyperf フレームワークを使用し始める前に、最初に権限テーブルとロール テーブルを構成する必要があります。プロジェクトで .env ファイルを開き、次の構成を追加します。

# 权限表
PERMISSION_TABLE=admin_permissions

# 角色表
ROLE_TABLE=admin_roles

次に、データベースに対応するテーブルを作成します。

2. 権限ミドルウェアの定義
Hyperf フレームワークは、リクエスト処理の前後にいくつかの操作を実行できるミドルウェア メカニズムを提供します。権限認証にはミドルウェアを使用できます。まず、次のコードを使用して、app/Middleware ディレクトリに新しいファイル AuthMiddleware.php を作成します:

<?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表示权限校验通过
    }
}

3. ミドルウェアの登録
config/autoload/middlewares.php ファイルを開いて、次の構成を追加します。

<?php

declare(strict_types=1);

return [
    // ...
    
    'auth' => AppMiddlewareAuthMiddleware::class,
];

4. ミドルウェアの使用
ルーティング設定では、権限認証にミドルウェアを使用できます。例:

<?php

declare(strict_types=1);

use HyperfHttpServerRouterRouter;

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

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

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

概要:
権限認証に Hyperf フレームワークを使用するのは非常に簡単です。 AuthMiddleware ミドルウェアを定義し、それをルーティング構成で使用するだけです。リクエストがミドルウェアに到達すると、カスタマイズされた権限認証ロジックが実行されます。権限の検証が失敗した場合、対応するエラー メッセージが返されることがあります。このようにして、簡単に権限制御機能を実装することができます。

参考リンク:

  1. Hyperf 公式ドキュメント: https://hyperf.wiki/2.2/#/zh-cn/middleware/middleware?id=Middleware登録

以上が権限認証に Hyperf フレームワークを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。