Rumah rangka kerja php Swoole Cara 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 muka Pengesahan rangka 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
Salin selepas log masuk
  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,
    ],
];
Salin selepas log masuk
  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);
    }
}
Salin selepas log masuk

    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,
            ],
        ];
    }
}
Salin selepas log masuk
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 Laman Web ini
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.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah antara muka dalaman papan induk komputer yang disyorkan pengenalan kepada antara muka dalaman papan induk komputer Apakah antara muka dalaman papan induk komputer yang disyorkan pengenalan kepada antara muka dalaman papan induk komputer Mar 12, 2024 pm 04:34 PM

Apabila kami memasang komputer, walaupun proses pemasangannya mudah, kami sering menghadapi masalah dalam pendawaian Selalunya, pengguna tersilap memasangkan talian bekalan kuasa radiator CPU ke SYS_FAN Walaupun kipas boleh berputar, ia mungkin tidak berfungsi apabila komputer dihidupkan. Akan terdapat ralat F1 "CPUFanError", yang juga menyebabkan penyejuk CPU tidak dapat melaraskan kelajuan secara bijak. Mari kita berkongsi pengetahuan bersama tentang antara muka CPU_FAN, SYS_FAN, CHA_FAN dan CPU_OPT pada papan induk komputer. Sains popular pada antara muka CPU_FAN, SYS_FAN, CHA_FAN dan CPU_OPT pada papan induk komputer 1. CPU_FANCPU_FAN ialah antara muka khusus untuk radiator CPU dan berfungsi pada 12V

Paradigma pengaturcaraan biasa dan corak reka bentuk dalam bahasa Go Paradigma pengaturcaraan biasa dan corak reka bentuk dalam bahasa Go Mar 04, 2024 pm 06:06 PM

Sebagai bahasa pengaturcaraan yang moden dan cekap, bahasa Go mempunyai paradigma pengaturcaraan yang kaya dan corak reka bentuk yang boleh membantu pembangun menulis kod yang berkualiti tinggi dan boleh diselenggara. Artikel ini akan memperkenalkan paradigma pengaturcaraan biasa dan corak reka bentuk dalam bahasa Go dan memberikan contoh kod khusus. 1. Pengaturcaraan berorientasikan objek Dalam bahasa Go, anda boleh menggunakan struktur dan kaedah untuk melaksanakan pengaturcaraan berorientasikan objek. Dengan mentakrifkan struktur dan kaedah mengikat kepada struktur, ciri berorientasikan objek bagi pengkapsulan data dan pengikatan tingkah laku boleh dicapai. packagemaini

Pengenalan kepada antara muka PHP dan cara mentakrifkannya Pengenalan kepada antara muka PHP dan cara mentakrifkannya Mar 23, 2024 am 09:00 AM

Pengenalan kepada antara muka PHP dan bagaimana ia ditakrifkan PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas dalam pembangunan Web Ia fleksibel, mudah dan berkuasa. Dalam PHP, antara muka ialah alat yang mentakrifkan kaedah biasa antara pelbagai kelas, mencapai polimorfisme dan menjadikan kod lebih fleksibel dan boleh digunakan semula. Artikel ini akan memperkenalkan konsep antara muka PHP dan cara mentakrifkannya, dan menyediakan contoh kod khusus untuk menunjukkan penggunaannya. 1. Konsep antara muka PHP Antara muka memainkan peranan penting dalam pengaturcaraan berorientasikan objek, mentakrifkan aplikasi kelas

Penyelesaian kepada NotImplementedError() Penyelesaian kepada NotImplementedError() Mar 01, 2024 pm 03:10 PM

Sebab ralat adalah dalam python Sebab mengapa NotImplementedError() dilemparkan dalam Tornado mungkin kerana kaedah atau antara muka abstrak tidak dilaksanakan. Kaedah atau antara muka ini diisytiharkan dalam kelas induk tetapi tidak dilaksanakan dalam kelas anak. Subkelas perlu melaksanakan kaedah atau antara muka ini untuk berfungsi dengan baik. Cara menyelesaikan masalah ini adalah dengan melaksanakan kaedah abstrak atau antara muka yang diisytiharkan oleh kelas induk dalam kelas kanak-kanak. Jika anda menggunakan kelas untuk mewarisi daripada kelas lain dan anda melihat ralat ini, anda harus melaksanakan semua kaedah abstrak yang diisytiharkan dalam kelas induk dalam kelas anak. Jika anda menggunakan antara muka dan anda melihat ralat ini, anda harus melaksanakan semua kaedah yang diisytiharkan dalam antara muka dalam kelas yang melaksanakan antara muka. Jika anda tidak pasti yang mana

Wawasan ke dalam sistem Hongmeng: pengukuran fungsi sebenar dan pengalaman penggunaan Wawasan ke dalam sistem Hongmeng: pengukuran fungsi sebenar dan pengalaman penggunaan Mar 23, 2024 am 10:45 AM

Sebagai sistem pengendalian baharu yang dilancarkan oleh Huawei, sistem Hongmeng telah menimbulkan kekecohan dalam industri. Sebagai percubaan baharu Huawei selepas larangan AS, sistem Hongmeng mempunyai harapan dan harapan yang tinggi. Baru-baru ini, saya cukup bernasib baik untuk mendapatkan telefon mudah alih Huawei yang dilengkapi dengan sistem Hongmeng Selepas tempoh penggunaan dan ujian sebenar, saya akan berkongsi beberapa ujian berfungsi dan pengalaman penggunaan sistem Hongmeng. Mula-mula, mari kita lihat antara muka dan fungsi sistem Hongmeng. Sistem Hongmeng mengguna pakai gaya reka bentuk Huawei sendiri secara keseluruhan, yang mudah, jelas dan lancar dalam operasi. Di desktop, pelbagai

Pelaksanaan kelas dalaman antara muka dan kelas abstrak dalam Java Pelaksanaan kelas dalaman antara muka dan kelas abstrak dalam Java Apr 30, 2024 pm 02:03 PM

Java membenarkan kelas dalaman ditakrifkan dalam antara muka dan kelas abstrak, memberikan fleksibiliti untuk penggunaan semula kod dan modularisasi. Kelas dalaman dalam antara muka boleh melaksanakan fungsi tertentu, manakala kelas dalaman dalam kelas abstrak boleh mentakrifkan fungsi umum, dan subkelas menyediakan pelaksanaan konkrit.

Menggunakan perpustakaan jwt-go untuk melaksanakan pengesahan dan pengesahan Token JWT dalam bahasa Go Menggunakan perpustakaan jwt-go untuk melaksanakan pengesahan dan pengesahan Token JWT dalam bahasa Go Jan 22, 2024 am 11:19 AM

Menggunakan perpustakaan jwt-go untuk melaksanakan pengesahan JWTToken dalam bahasa Go JWT (JSONWebToken) ialah kaedah pengesahan dan kebenaran ringan yang boleh membantu kami memindahkan maklumat yang selamat dan boleh dipercayai antara pengguna dan sistem berdasarkan format JSON. Dalam proses membina JWTToken, kami perlu menandatangani Payload, yang juga bermakna apabila kami menghuraikan Token pada bahagian pelayan, kami boleh mengesahkan kesahihannya. Dalam bahasa Go kita boleh

Antara muka Java dan kelas abstrak: mendedahkan sambungan dalaman antara mereka Antara muka Java dan kelas abstrak: mendedahkan sambungan dalaman antara mereka Mar 04, 2024 am 09:34 AM

Antara Muka Antaramuka mentakrifkan kaedah abstrak dan pemalar dalam Java. Kaedah dalam antara muka tidak dilaksanakan, tetapi disediakan oleh kelas yang melaksanakan antara muka. Antara muka mentakrifkan kontrak yang memerlukan kelas pelaksanaan untuk menyediakan pelaksanaan kaedah tertentu. Isytiharkan antara muka: publicinterfaceExampleInterface{voiddoSomething();intgetSomething();} Kelas abstrak Kelas abstrak ialah kelas yang tidak boleh dibuat instantiated. Ia mengandungi campuran kaedah abstrak dan bukan abstrak. Sama seperti antara muka, kaedah abstrak dalam kelas abstrak dilaksanakan oleh subkelas. Walau bagaimanapun, kelas abstrak juga boleh mengandungi kaedah konkrit, yang menyediakan pelaksanaan lalai. Isytiharkan kelas abstrak: publicabstractcl

See all articles