Heim  >  Artikel  >  PHP-Framework  >  So verwenden Sie das Hyperf-Framework für die Schnittstellenauthentifizierung

So verwenden Sie das Hyperf-Framework für die Schnittstellenauthentifizierung

王林
王林Original
2023-10-25 09:31:491486Durchsuche

So verwenden Sie das Hyperf-Framework für die Schnittstellenauthentifizierung

So verwenden Sie das Hyperf-Framework für die Schnittstellenauthentifizierung

Authentifizierung ist ein wichtiges Sicherheitsproblem bei der Entwicklung von Webanwendungen. Sie kann unsere Schnittstellen vor dem Zugriff unbefugter Benutzer schützen. Wenn wir das Hyperf-Framework zum Entwickeln von Schnittstellen verwenden, können wir den von Hyperf bereitgestellten Authentifizierungsmechanismus verwenden, um die Schnittstellenauthentifizierung zu implementieren. In diesem Artikel wird die Verwendung des Hyperf-Frameworks für die Schnittstellenauthentifizierung vorgestellt und spezifische Codebeispiele bereitgestellt.

1. Schnittstellenauthentifizierung verstehen

Schnittstellenauthentifizierung ist der Prozess der Überprüfung der Identitätsinformationen des Benutzers, um festzustellen, ob der Benutzer berechtigt ist, auf die Schnittstelle zuzugreifen. Zu den gängigen Authentifizierungsmethoden gehören die tokenbasierte Authentifizierung und die rollenbasierte Authentifizierung.

Die tokenbasierte Authentifizierung wird von einem Token ausgestellt, nachdem sich der Benutzer angemeldet hat. Jedes Mal, wenn der Benutzer die Schnittstelle anfordert, muss der Benutzer das Token im Header der Anfrage tragen. Der Server überprüft die Gültigkeit des Tokens und bestimmt, ob Die Identität des Benutzers ist legitim.

Bei der rollenbasierten Authentifizierung werden Benutzern unterschiedliche Rollen und Berechtigungen zugewiesen. Wenn der Benutzer eine Schnittstelle anfordert, überprüft der Server basierend auf der Rolle des Benutzers, ob er das Recht hat, auf die Schnittstelle zuzugreifen.

2. Konfigurieren Sie die Schnittstellenauthentifizierung des Hyperf-Frameworks.

  1. Installieren Sie die JWT-Komponente.

Das Hyperf-Framework stellt die Hyperf/Jwt-Komponente zur Unterstützung der Schnittstellenauthentifizierung bereit. Führen Sie den folgenden Befehl im Projektstammverzeichnis aus:

composer require hyperf/jwt
  1. Middleware konfigurieren

Die Hyperf-Framework-Middleware kann einige Verarbeitungen durchführen, bevor oder nachdem die Anforderung den Controller erreicht. Wir können die Schnittstellenauthentifizierung implementieren, indem wir Middleware konfigurieren.

Fügen Sie den folgenden Code in die Datei config/autoload/middleware.php ein:

return [
    'http' => [
        AppMiddlewareJwtAuthMiddleware::class,
    ],
];
  1. Middleware schreiben

Erstellen Sie die Datei JwtAuthMiddleware.php im Verzeichnis app/Middleware und schreiben Sie den folgenden Code:

<?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. Verwenden Sie Hyperf-Schnittstellenauthentifizierung

  1. Anmeldung generiert Token

Nach der Authentifizierung des Benutzers wird die Hyperf/Jwt-Komponente verwendet, um ein Token zu generieren und es an das Front-End zurückzugeben jedes Mal, wenn die Schnittstelle angefordert wird. Ein Beispiel lautet wie folgt:

<?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. Schnittstellenauthentifizierung

In der Schnittstelle, die eine Authentifizierung erfordert, können wir Benutzerinformationen über den Kontext abrufen und feststellen, ob der Benutzer berechtigt ist, auf die Schnittstelle zuzugreifen. Ein Beispiel lautet wie folgt:

<?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,
        ];
    }
}

Durch die obigen Schritte können wir die Schnittstellenauthentifizierung im Hyperf-Framework implementieren. Verwenden Sie in Schnittstellen, die eine Authentifizierung erfordern, Middleware, um Anforderungen zu authentifizieren und zu überprüfen, und führen Sie dann die entsprechende Verarbeitung basierend auf den Authentifizierungsergebnissen durch. Dadurch kann die Sicherheit der Schnittstelle effektiv gewährleistet und sichergestellt werden, dass nur autorisierte Benutzer auf die Schnittstelle zugreifen können.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Hyperf-Framework für die Schnittstellenauthentifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn