cari
Rumahrangka kerja phpSwooleCara menggunakan rangka kerja Hyperf untuk pengesahan antara muka

Cara menggunakan rangka kerja Hyperf untuk pengesahan antara muka

Oct 25, 2023 am 09:31 AM
antara mukaPengesahanrangka kerja hyperf

Cara menggunakan rangka kerja Hyperf untuk pengesahan antara muka

Cara menggunakan rangka kerja Hyperf untuk pengesahan antara muka

Pengesahan ialah isu keselamatan yang penting dalam pembangunan aplikasi web, ia boleh melindungi antara muka kami daripada diakses oleh pengguna yang tidak dibenarkan. Apabila menggunakan rangka kerja Hyperf untuk membangunkan antara muka, kita boleh menggunakan mekanisme pengesahan yang disediakan oleh Hyperf untuk melaksanakan pengesahan antara muka. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk pengesahan antara muka dan memberikan contoh kod khusus.

1. Memahami pengesahan antara muka

Pengesahan antara muka ialah proses mengesahkan maklumat identiti pengguna untuk menentukan sama ada pengguna mempunyai hak untuk mengakses antara muka. Kaedah pengesahan biasa termasuk pengesahan berasaskan token dan pengesahan berasaskan peranan.

Pengesahan berasaskan token dikeluarkan oleh Token selepas pengguna log masuk. Setiap kali pengguna meminta antara muka, pengguna perlu membawa Token dalam pengepala permintaan Pelayan mengesahkan kesahihan Token dan menentukan sama ada identiti pengguna adalah sah.

Pengesahan berasaskan peranan adalah dengan memberikan peranan dan kebenaran yang berbeza kepada pengguna Apabila pengguna meminta antara muka, pelayan akan mengesahkan sama ada pengguna mempunyai hak untuk mengakses antara muka berdasarkan peranan pengguna.

2. Konfigurasikan pengesahan antara muka rangka kerja Hyperf

  1. Pasang komponen jwt

Rangka kerja Hyperf menyediakan komponen Hyperf/Jwt untuk menyokong pengesahan antara muka Kami perlu memasang komponen ini dalam projek. Jalankan arahan berikut dalam direktori akar projek:

composer require hyperf/jwt
  1. Konfigurasi middleware

Middleware rangka kerja hyperf boleh melakukan beberapa pemprosesan sebelum atau selepas permintaan sampai ke pengawal. Kami boleh melaksanakan pengesahan antara muka dengan mengkonfigurasi middleware.

Tambah kod berikut dalam fail config/autoload/middleware.php:

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

Buat fail JwtAuthMiddleware.php dalam direktori app/Middleware dan tulis kod berikut:

Pengesahan Antara Muka Hyperf

    Log masuk menjana Token
Dalam antara muka log masuk, selepas pengguna disahkan, komponen Hyperf/Jwt digunakan untuk menjana Token dan mengembalikannya ke hujung hadapan perlu membawa Token setiap kali ia meminta antara muka. Contohnya adalah seperti berikut:

<?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);
    }
}

    Pengesahan Antaramuka
Dalam antara muka yang memerlukan pengesahan, kita boleh mendapatkan maklumat pengguna melalui Konteks dan menentukan sama ada pengguna mempunyai hak untuk mengakses antara muka. Contohnya adalah seperti berikut:

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

Melalui langkah di atas, kami boleh melaksanakan pengesahan antara muka dalam rangka kerja Hyperf. Dalam antara muka yang memerlukan pengesahan, gunakan perisian tengah untuk mengesahkan dan mengesahkan permintaan, dan kemudian melaksanakan pemprosesan yang sepadan berdasarkan hasil pengesahan. Ini boleh memastikan keselamatan antara muka dengan berkesan dan memastikan bahawa hanya pengguna yang dibenarkan boleh mengakses antara muka.

Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk pengesahan antara muka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa