Hyperf フレームワークを使用して権限を管理する方法

WBOY
リリース: 2023-10-20 18:11:06
オリジナル
1282 人が閲覧しました

Hyperf フレームワークを使用して権限を管理する方法

Hyperf フレームワークを使用してアクセス許可を管理する方法

今日のインターネット時代では、アクセス許可の管理は重要な問題です。アプリケーションを開発するとき、場合によっては、ユーザーの ID と役割に基づいてシステム リソースへのユーザーのアクセスを制御する必要があります。この点で、Hyperf フレームワークは強力なツールとメソッドを提供します。この記事では、権限管理に Hyperf フレームワークを使用する方法を紹介し、具体的なコード例を示します。

1. Hyperf フレームワークをインストールする

まず、Hyperf フレームワークをインストールする必要があります。 Composer を使用してインストールを完了し、次のコマンドを実行できます:

$ composer create-project hyperf/hyperf-skeleton
ログイン後にコピー

インストールが完了したら、プロジェクト ディレクトリに入り、次のコマンドを実行して Hyperf サーバーを起動します:

$ php bin/hyperf.php start
ログイン後にコピー

2 . パーミッション ルールの定義

Hyperf フレームワークでは、アノテーションを通じてパーミッション ルールを定義できます。まず、config/autoload/permissions.php ファイルで権限ルールを定義する必要があります。例:

<?php

use HyperfPermissionModelPermission;

Permission::create([
    'name' => 'user-manage',
    'display_name' => '用户管理',
]);

Permission::create([
    'name' => 'article-manage',
    'display_name' => '文章管理',
]);
ログイン後にコピー

上記のコードでは、ユーザー管理と記事管理という 2 つの権限ルールを定義します。

3. ミドルウェアの作成

次に、ユーザーに特定のルートへのアクセス権限があるかどうかを確認するミドルウェアを作成する必要があります。ミドルウェアは次のコマンドで作成できます:

$ php bin/hyperf.php gen:middleware CheckPermission
ログイン後にコピー

次に、app/Middleware/CheckPermissionMiddleware.php ファイルを編集して権限チェック ロジックを実装します。以下に例を示します。

<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfHttpServerContractResponseInterface as HttpResponse;
use HyperfUtilsApplicationContext;
use PsrContainerContainerInterface;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageServerRequestInterface;
use PsrHttpServerMiddlewareInterface;
use PsrHttpServerRequestHandlerInterface;

class CheckPermissionMiddleware implements MiddlewareInterface
{
    /**
     * @var HttpResponse
     */
    protected $response;

    public function __construct(ContainerInterface $container)
    {
        $this->response = ApplicationContext::getContainer()->get(HttpResponse::class);
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        // 在这里实现权限检查逻辑
        $permissions = $request->getAttribute('permissions', []);

        foreach ($permissions as $permission) {
            if (! $this->hasPermission($permission)) {
                return $this->response->json([
                    'code' => 403,
                    'message' => '没有权限访问该资源',
                ]);
            }
        }

        return $handler->handle($request);
    }

    protected function hasPermission($permission)
    {
        // 在这里实现检查用户是否拥有该权限的逻辑
        // 返回true表示有权限,返回false表示没有权限
    }
}
ログイン後にコピー

上記のコードでは、リクエストで権限パラメーターを渡すことによって、チェックする権限を指定します。 process メソッドでは、受信したアクセス許可パラメータをループし、hasPermission メソッドを呼び出して、ユーザーがアクセス許可を持っているかどうかを確認します。許可がない場合は 403 エラーを返します。

4. 権限チェックを実行する

権限チェックが必要なルートでは、ミドルウェアを使用してユーザーの権限をチェックできます。以下に例を示します。

<?php

use AppMiddlewareCheckPermissionMiddleware;

Router::get('/users', 'UserController@index')
    ->middleware([
        new CheckPermissionMiddleware([
            'user-manage',
        ]),
    ]);
ログイン後にコピー

上記のコードでは、ミドルウェア メソッドを通じて使用するミドルウェアを指定します。この例では、CheckPermissionMiddleware を使用し、ユーザー管理権限を渡します。

上記の手順により、Hyperf フレームワークに簡単な権限管理を実装できます。権限ルールを定義し、ミドルウェアを作成し、ミドルウェアを使用して権限チェックを実行することにより、ユーザーの ID と役割に基づいてシステム リソースへのアクセスを制御できます。

概要:

Hyperf フレームワークは、権限管理のための便利なツールとメソッドを提供します。この記事では、アクセス許可ルールを定義し、ミドルウェアを作成し、アクセス許可チェックにミドルウェアを使用する方法を学びました。これらの手順を通じて、アクセス許可管理機能を簡単に実装し、ユーザーの ID と役割に基づいてシステム リソースへのアクセスを制御できます。この記事が、権限管理に Hyperf フレームワークを使用するのに役立つことを願っています。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート