ホームページ  >  記事  >  PHPフレームワーク  >  インターフェイス認証に Hyperf フレームワークを使用する方法

インターフェイス認証に Hyperf フレームワークを使用する方法

王林
王林オリジナル
2023-10-25 09:31:491597ブラウズ

インターフェイス認証に Hyperf フレームワークを使用する方法

インターフェイス認証に Hyperf フレームワークを使用する方法

認証は、Web アプリケーション開発における重要なセキュリティ問題です。これにより、インターフェイスを不正アクセスから保護できます。許可されたユーザー アクセス。 Hyperf フレームワークを使用してインターフェイスを開発する場合、Hyperf が提供する認証メカニズムを使用してインターフェイス認証を実装できます。この記事では、インターフェイス認証に Hyperf フレームワークを使用する方法を紹介し、具体的なコード例を示します。

1. インターフェイス認証について

インターフェイス認証は、ユーザーの ID 情報を検証して、ユーザーがインターフェイスにアクセスする権利があるかどうかを判断するプロセスです。一般的な認証方法には、トークンベースの認証とロールベースの認証があります。

トークンベースの認証は、ユーザーのログイン後にトークンによって発行されます。ユーザーがインターフェイスをリクエストするたびに、ユーザーはリクエストのヘッダーにトークンを含める必要があります。サーバーは、トークンの有効性を検証します。トークンを使用して、ユーザーの ID が正当であるかどうかを判断します。

ロールベースの認証では、さまざまなロールと権限がユーザーに割り当てられます。ユーザーがインターフェイスを要求すると、サーバーはユーザーのロールに基づいてインターフェイスにアクセスする権利があるかどうかを確認します。

2. Hyperf フレームワーク インターフェイス認証の構成

  1. jwt コンポーネントのインストール

Hyperf フレームワークは、インターフェイス認証をサポートする Hyperf/Jwt コンポーネントを提供します。をクリックして、このコンポーネントをプロジェクトにインストールします。プロジェクトのルート ディレクトリで次のコマンドを実行します。

composer require hyperf/jwt
  1. ミドルウェアの構成

Hyperf フレームワーク ミドルウェアは、要求がコントローラーに到達する前または後にいくつかの処理を実行できます。ミドルウェアを構成することでインターフェース認証を実装できます。

次のコードを config/autoload/middleware.php ファイルに追加します:

return [
    'http' => [
        AppMiddlewareJwtAuthMiddleware::class,
    ],
];
  1. Write middleware

JwtAuthMiddleware を app/Middleware ディレクトリに作成します.php ファイルに次のコードを記述します:

<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfDiAnnotationInject;
use HyperfHttpServerContractRequestInterface;
use HyperfHttpServerContractResponseInterface;
use HyperfUtilsContext;
use HyperfUtilsExceptionParallelExecutionException;
use Phper666JwtAuthJwt;

class JwtAuthMiddleware implements MiddlewareInterface
{
    /**
     * @Inject
     * @var Jwt
     */
    protected $jwt;

    /**
     * @Inject
     * @var RequestInterface
     */
    protected $request;

    /**
     * @Inject
     * @var ResponseInterface
     */
    protected $response;

    /**
     * 接口鉴权逻辑处理
     */
    public function process(RequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        if (!$this->jwt->checkToken()) {
            return $this->response->json([
                'code' => 401,
                'message' => 'Unauthorized',
            ]);
        }
        
        // 鉴权通过,将用户信息保存在Context中,后续控制器可通过Context获取用户信息
        Context::set('user', $this->jwt->getParserData());

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

3. インターフェイス認証に Hyperf を使用します

  1. ログインしてトークンを生成します

ログイン インターフェイスで、ユーザー検証に合格した後、Hyperf/Jwt コンポーネントを使用してトークンを生成し、それをフロントエンドに返します。フロントエンドは、インターフェイスを要求するたびにトークンを取得する必要があります。例は次のとおりです。

<?php

declare(strict_types=1);

namespace AppController;

use HyperfHttpServerAnnotationAutoController;
use HyperfDiAnnotationInject;
use Phper666JwtAuthJwt;

/**
 * @AutoController
 */
class AuthController
{
    /**
     * @Inject
     * @var Jwt
     */
    protected $jwt;

    public function login()
    {
        // 获取用户信息
        $userInfo = [
            'user_id' => 1,
            'username' => 'admin',
        ];

        // 生成Token
        $token = $this->jwt->getToken($userInfo);

        // 返回Token给前端
        return [
            'code' => 200,
            'message' => 'success',
            'data' => [
                'token' => $token,
            ],
        ];
    }
}
  1. インターフェイス認証

認証が必要なインターフェイスでは、Context を通じてユーザー情報を取得し、ユーザーが次の権限を持っているかどうかを判断できます。インターフェースにアクセスします。例は次のとおりです。

<?php

declare(strict_types=1);

namespace AppController;

use HyperfHttpServerAnnotationAutoController;
use HyperfDiAnnotationInject;
use HyperfUtilsContext;

/**
 * @AutoController
 */
class UserController
{
    public function getUserInfo()
    {
        // 从Context中获取用户信息
        $userInfo = Context::get('user');

        // 根据用户信息查询用户
        // ...

        // 返回用户信息给前端
        return [
            'code' => 200,
            'message' => 'success',
            'data' => $userInfo,
        ];
    }
}

上記の手順を通じて、Hyperf フレームワークにインターフェイス認証を実装できます。認証が必要なインターフェースでは、ミドルウェアを利用してリクエストの認証・検証を行い、認証結果に応じた処理を行います。これにより、インターフェイスのセキュリティが効果的に確保され、許可されたユーザーのみがインターフェイスにアクセスできるようになります。

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

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