ホームページ  >  記事  >  PHPフレームワーク  >  アクセス制御に Hyperf フレームワークを使用する方法

アクセス制御に Hyperf フレームワークを使用する方法

WBOY
WBOYオリジナル
2023-10-20 09:43:52727ブラウズ

アクセス制御に Hyperf フレームワークを使用する方法

アクセス制御に Hyperf フレームワークを使用する方法

アクセス制御は、Web アプリケーションにおける非常に重要な機能です。アクセス制御を通じて、さまざまなリソースに対するユーザーのアクセス権を制限し、システムのセキュリティを向上させることができます。 Hyperf フレームワークでは、ミドルウェアを使用してアクセス制御を実装できます。

この記事では、Hyperf フレームワークでアクセス制御にミドルウェアを使用する方法を紹介し、具体的なコード例を示します。

1. ミドルウェアの作成

まず、アクセス制御を実装するためのミドルウェアを作成する必要があります。 Hyperf フレームワークでは、ミドルウェアは HyperfHttpServerContractMiddlewareInterface インターフェイスを実装する呼び出し可能なクラスです。

次のコマンドを使用してミドルウェアをすばやく生成できます:

php bin/hyperf.php gen:middleware AccessControlMiddleware

生成されたミドルウェア ファイルは app/Middleware/AccessControlMiddleware.php にあり、そこに追加できます。制御ロジックにアクセスします。

2. ミドルウェアの構成

次に、アプリケーションの構成ファイル config/autoload/middleware.php でミドルウェアを構成する必要があります。ミドルウェアをグローバルミドルウェアまたは指定されたルートのミドルウェアグループに追加する必要があります。

たとえば、ミドルウェアをグローバル ミドルウェアに追加する場合は、config/autoload/middleware.php に次のコードを追加できます:

return [
    'http' => [
        HyperfValidationMiddlewareValidationMiddleware::class,
        AppMiddlewareAccessControlMiddleware::class,
    ],
];

3.アクセス制御ルール

アクセス制御ルールはミドルウェアで定義できます。以下は、ミドルウェアでアクセス制御を実装する方法を示すサンプル ミドルウェアです:

<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfHttpServerContractRequestInterface;
use PsrHttpMessageResponseInterface;
use PsrHttpServerMiddlewareInterface;
use PsrHttpMessageServerRequestInterface;
use PsrHttpServerRequestHandlerInterface;

class AccessControlMiddleware implements MiddlewareInterface
{
    /**
     * @var RequestInterface
     */
    protected $request;

    public function __construct(RequestInterface $request)
    {
        $this->request = $request;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        // 检查用户权限
        $user = $this->request->getAttribute('user');
        if ($user && $user->hasPermission('access_admin')) {
            return $handler->handle($request);
        }

        // 返回没有权限的错误页面
        $response = new HyperfHttpMessageStreamSwooleStream('Access Denied');
        return $response->withStatus(403);
    }
}

上記の例では、最初にコンストラクターを通じて RequestInterface を挿入して、コンテキスト情報を取得できるようにしました。ファイルからの現在のリクエスト。

process メソッドでは、ユーザーの権限を確認します。ユーザーが管理者ページへのアクセス権限を持っている場合は、リクエストの処理を続行します。そうでない場合は、403 エラーを返します。

4. ミドルウェアの使用

作成したミドルウェアを使用するには、対応するルートまたはコントローラー メソッドに適用する必要があります。

たとえば、ルーティング ファイル config/routes.php:

<?php

use HyperfHttpRouterRouter;

Router::get('/', 'AppControllerHomeController@index');
Router::post('/admin', 'AppControllerAdminController@index')->middleware([
    AppMiddlewareAccessControlMiddleware::class,
]);

でミドルウェアを使用できます。上の例では、ミドルウェアを On に適用しました。 /admin ルート。

概要

Hyperf フレームワークのミドルウェアを使用することで、アクセス制御機能を簡単に実装できます。カスタム ミドルウェア クラスを作成してアクセス制御ロジックを実装し、それをグローバル ミドルウェアまたは指定されたルートのミドルウェア グループに構成できます。

上記は、アクセス制御に Hyperf フレームワークを使用する方法の紹介です。

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

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