Menggunakan JWT untuk pengesahan dalam ThinkPHP6
Jun 21, 2023 pm 01:34 PMDalam 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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk menjalankan projek ThinkPHP, anda perlu: memasang Komposer untuk mencipta projek, masukkan direktori projek dan laksanakan php bin/console serve;

ThinkPHP mempunyai berbilang versi yang direka untuk versi PHP yang berbeza. Versi utama termasuk 3.2, 5.0, 5.1 dan 6.0, manakala versi kecil digunakan untuk membetulkan pepijat dan menyediakan ciri baharu. Versi stabil terkini ialah ThinkPHP 6.0.16. Apabila memilih versi, pertimbangkan versi PHP, keperluan ciri dan sokongan komuniti. Adalah disyorkan untuk menggunakan versi stabil terkini untuk prestasi dan sokongan terbaik.

Langkah-langkah untuk menjalankan ThinkPHP Framework secara setempat: Muat turun dan nyahzip ThinkPHP Framework ke direktori tempatan. Buat hos maya (pilihan) yang menunjuk ke direktori akar ThinkPHP. Konfigurasikan parameter sambungan pangkalan data. Mulakan pelayan web. Mulakan aplikasi ThinkPHP. Akses URL aplikasi ThinkPHP dan jalankannya.

Perbandingan prestasi rangka kerja Laravel dan ThinkPHP: ThinkPHP umumnya berprestasi lebih baik daripada Laravel, memfokuskan pada pengoptimuman dan caching. Laravel berfungsi dengan baik, tetapi untuk aplikasi yang kompleks, ThinkPHP mungkin lebih sesuai.

Langkah pemasangan ThinkPHP: Sediakan persekitaran PHP, Komposer dan MySQL. Buat projek menggunakan Komposer. Pasang rangka kerja dan kebergantungan ThinkPHP. Konfigurasikan sambungan pangkalan data. Hasilkan kod aplikasi. Lancarkan aplikasi dan lawati http://localhost:8000.

ThinkPHP ialah rangka kerja PHP berprestasi tinggi dengan kelebihan seperti mekanisme caching, pengoptimuman kod, pemprosesan selari dan pengoptimuman pangkalan data. Ujian prestasi rasmi menunjukkan bahawa ia boleh mengendalikan lebih daripada 10,000 permintaan sesaat, dan digunakan secara meluas dalam tapak web dan sistem perusahaan berskala besar seperti JD.com dan Ctrip dalam aplikasi praktikal.

Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk pembangunan API Dengan pembangunan berterusan Internet, kepentingan API (Antara Muka Pengaturcaraan Aplikasi) telah menjadi semakin menonjol. API ialah jambatan untuk komunikasi antara aplikasi yang berbeza Ia boleh merealisasikan perkongsian data, panggilan fungsi dan operasi lain, dan menyediakan pembangun kaedah pembangunan yang agak mudah dan pantas. Sebagai rangka kerja pembangunan PHP yang sangat baik, rangka kerja ThinkPHP adalah cekap, berskala dan mudah digunakan.

Cara menggunakan rangka kerja Hyperf untuk pengesahan JWT Pengenalan: Hyperf ialah rangka kerja coroutine berprestasi tinggi berdasarkan Swoole, yang menyediakan fungsi yang kaya dan kebolehskalaan yang fleksibel. JWT (JSONWebToken) ialah piawaian terbuka untuk mengesahkan dan menghantar maklumat. Dalam artikel ini, kami akan memperkenalkan cara menggunakan pengesahan JWT dalam rangka kerja Hyperf dan memberikan contoh kod khusus. 1. Pasang pakej pergantungan Pertama, kita perlu memasang hyperf/jwt dan lcobucci/jw
