Rumah > Artikel > rangka kerja php > 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
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
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, ], ];
Buat fail JwtAuthMiddleware.php dalam direktori app/Middleware dan tulis kod berikut:
Pengesahan Antara Muka Hyperf<?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); } }
<?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!