search
HomePHP FrameworkSwooleHow to use the Hyperf framework for interface authentication

How to use the Hyperf framework for interface authentication

Oct 25, 2023 am 09:31 AM
interfaceAuthenticationhyperf framework

How to use the Hyperf framework for interface authentication

How to use the Hyperf framework for interface authentication

Authentication is an important security issue in Web application development. It can protect our interfaces from unauthorized access. Authorized user access. When using the Hyperf framework to develop interfaces, we can use the authentication mechanism provided by Hyperf to implement interface authentication. This article will introduce how to use the Hyperf framework for interface authentication and provide specific code examples.

1. Understanding interface authentication

Interface authentication is the process of verifying the user's identity information to determine whether the user has the right to access the interface. Common authentication methods include token-based authentication and role-based authentication.

Token-based authentication is issued by a Token after the user logs in. Each time the user requests the interface, the user needs to carry the Token in the header of the request. The server verifies the validity of the Token and determines Whether the user's identity is legitimate.

Role-based authentication assigns different roles and permissions to users. When a user requests an interface, the server will verify whether the user has the right to access the interface based on the user's role.

2. Configure Hyperf framework interface authentication

  1. Install jwt component

Hyperf framework provides Hyperf/Jwt component to support interface authentication, we First you need to install this component in your project. Run the following command in the project root directory:

composer require hyperf/jwt
  1. Configure middleware

Hyperf framework middleware can perform some processing before or after the request reaches the controller. We can implement interface authentication by configuring middleware.

Add the following code in the config/autoload/middleware.php file:

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

Create JwtAuthMiddleware in the app/Middleware directory .php file, write the following 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. Use Hyperf for interface authentication

  1. Login to generate Token

In the login interface, the user After passing the verification, use the Hyperf/Jwt component to generate a token and return it to the front end. The front end needs to bring the token every time it requests the interface. An example is as follows:

<?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. Interface Authentication

In the interface that requires authentication, we can obtain user information through Context and determine whether the user has the right to access the interface . An example is as follows:

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

Through the above steps, we can implement interface authentication in the Hyperf framework. In interfaces that require authentication, use middleware to authenticate and verify requests, and then perform corresponding processing based on the authentication results. This can effectively ensure the security of the interface and ensure that only authorized users can access the interface.

The above is the detailed content of How to use the Hyperf framework for interface authentication. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.