Dalam pembangunan aplikasi Internet berskala besar hari ini, pengesahan keselamatan pengguna merupakan bahagian penting. Untuk memastikan keselamatan pengguna, amalan biasa adalah menggunakan Token Web JSON (JWT) untuk pengesahan. Ia boleh melaksanakan pengesahan pengguna dan kawalan kebenaran dengan mudah dan berkesan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan JWT untuk pengesahan dalam projek ThinkPHP6.
Apakah itu JSON Web Token?
JSON Web Token (JWT) ialah mekanisme pengesahan yang ringan. Tujuannya adalah untuk menghantar tuntutan dengan selamat melalui rangkaian, dan ia boleh digunakan sebagai cara pengesahan dan pertukaran tuntutan. JWT terkandung dalam pengepala permintaan HTTP atau parameter URL, jadi ia mudah dan mudah dipindahkan antara pelayan dan klien.
JWT terdiri daripada tiga bahagian: pengepala, muatan dan tandatangan. Pengepala mengandungi maklumat yang menerangkan algoritma dan jenis tandatangan, muatan mengandungi maklumat pengisytiharan dan data, dan tandatangan digunakan untuk mengesahkan kesahihan JWT. Sebarang data boleh disimpan dalam muatan JWT, dan anda boleh menyesuaikan maklumat yang anda perlukan.
Langkah untuk menggunakan JWT untuk pengesahan dalam ThinkPHP6
Langkah 1: Pasang sambungan jwt-auth
Pertama, kami perlu memperkenalkan sambungan jwt-auth ke dalam projek. Tambahkan kebergantungan berikut dalam fail composer.json:
"tymon/jwt-auth": "^1.0.0-rc.5"
Gunakan kemas kini komposer untuk mengemas kini selepas memasang dependensi.
Langkah 2: Jana fail konfigurasi
Jalankan arahan berikut untuk menjana fail konfigurasi:
php think jwt:publish
Selepas menjana fail konfigurasi, kita perlu mengubah suai konfigurasi, tetapkan kunci JWT dan tempoh sah, dsb. Parameter, cuma ubah suai fail /config/jwt.php.
Langkah 3: Tulis perisian tengah pengesahan
Proses pengesahan JWT perlu diselesaikan di bahagian pelayan. Oleh itu, kita perlu mencipta AuthMiddleware middleware untuk mengesahkan JWT sebelum permintaan sampai kepada pengawal.
Pertama, kita perlu mencipta fail AuthMiddleware:
php think make:middleware AuthMiddleware
Dalam fail AuthMiddleware, kita boleh menggunakan kod berikut untuk mengesahkan JWT:
<?php namespace appmiddleware; use thinkacadeRequest; use TymonJWTAuthExceptionsTokenExpiredException; use TymonJWTAuthFacadesJWTAuth; use thinkexceptionHttpException; class AuthMiddleware { public function handle($request, Closure $next) { //获取JWT token $token = JWTAuth::getToken(); if (!$token) { throw new HttpException(401, 'Token not provided'); } try { //验证JWT token $user = JWTAuth::authenticate($token); $request->user = $user; } catch (TokenExpiredException $exception) { throw new HttpException(401, 'Token expired'); } catch (Exception $exception) { throw new HttpException(401, 'Token invalid'); } return $next($request); } }
Dalam fungsi pemegang, kami mula-mula Dapatkan token JWT. Jika token tidak wujud, pengecualian 401 akan dibuang.
Jika token wujud, kami menggunakan JWTAuth::authenticate($token) untuk mengesahkan kesahihan token Jika berjaya, maklumat pengguna akan terikat pada konteks permintaan.
Perlu diambil perhatian bahawa dalam kod di atas, semua pengecualian yang dilemparkan akan mengembalikan kod ralat 401.
Langkah 4: Gunakan middleware untuk pengesahan
Gunakan AuthMiddleware middleware dalam pengawal untuk pengesahan, seperti yang ditunjukkan di bawah:
<?php namespace appcontroller; use appmiddlewareAuthMiddleware; class UserController extends Base { protected $middleware = [ AuthMiddleware::class ]; public function index() { return json($this->request->user, 200); } }
Dalam kod di atas, kami Pengawal menambah AuthMiddleware middleware, jadi ia akan dilaksanakan secara automatik sebelum permintaan sampai ke pengawal.
Kaedah indeks pengawal mengembalikan maklumat pengguna semasa yang meminta Jika pengesahan JWT betul, maklumat pengguna dalam format json akan dikembalikan.
Kesimpulan
Artikel ini memperkenalkan cara menggunakan JWT untuk pengesahan dalam projek ThinkPHP6. Kami memperkenalkan proses pelaksanaan pengesahan JWT secara terperinci dengan memasang sambungan JWT dan menjana fail konfigurasi, menulis perisian tengah pengesahan dan menggunakan perisian tengah. Semasa proses ini, kami mendapat pemahaman yang lebih mendalam tentang pengetahuan berkaitan JWT dan memberikan pengalaman berharga untuk pembangunan Internet masa hadapan.
Atas ialah kandungan terperinci Menggunakan JWT untuk pengesahan dalam ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!