Dengan pembangunan aplikasi web, pengesahan API telah menjadi bahagian penting dalam aplikasi web moden. Token Web JSON (JWT) ialah standard terbuka untuk pengesahan dan kebenaran yang menyediakan cara yang selamat dan boleh dipercayai untuk mengesahkan pengguna dan melaksanakan log masuk tunggal. Artikel ini akan menerangkan cara menggunakan JWT untuk pengesahan API dalam PHP.
Apakah itu JWT?
JSON Web Token (JWT) ialah standard berdasarkan format JSON, yang boleh digunakan untuk menghantar maklumat dengan selamat melalui Internet. JWT biasanya terdiri daripada tiga bahagian: pengepala, muatan dan tandatangan.
Aliran kerja JWT
Apabila pengguna log masuk, pelayan akan memberikan JWT kepada pengguna. JWT ini akan dihantar kepada pelanggan dan disimpan dalam kuki pelanggan atau storan setempat. Apabila pengguna ingin mengakses API yang dilindungi, pelanggan menghantar JWT kembali ke pelayan. Pelayan akan menyemak tandatangan JWT dan mengesahkan data dalam muatan untuk memastikan pengguna mempunyai kebenaran untuk mengakses API. Jika JWT lulus pengesahan, pelayan membenarkan pengguna untuk mengakses API.
Menggunakan PHP untuk melaksanakan pengesahan JWT
Dalam PHP, kita boleh menggunakan beberapa perpustakaan sumber terbuka yang popular untuk melaksanakan pengesahan JWT. Artikel ini akan menggunakan pustaka JWT Firebase, yang menyediakan API mudah untuk mencipta dan mengesahkan JWT. Berikut ialah contoh mudah:
komposer memerlukan firebase/php-jwt
Kod berikut akan mencipta JWT yang mengandungi tandatangan dan data muatan tersuai.
use FirebaseJWTJWT; // Set the payload data (custom data) $payload = [ "user_id" => 1, "username" => "john.doe", ]; // Generate JWT using secret key $jwt = JWT::encode($payload, 'secret_key');
Kod di bawah akan mengesahkan tandatangan JWT dan menyemak sama ada data muatan adalah sah.
use FirebaseJWTJWT; // Verify JWT using secret key try { $decoded = JWT::decode($jwt, 'secret_key', array('HS256')); } catch (Exception $e) { // Handle invalid JWT } // Access the payload data $user_id = $decoded->user_id; $username = $decoded->username;
Selepas mencipta JWT, kami boleh menghantarnya kepada pelanggan dan menyimpannya dalam kuki atau storan setempat.
// Set JWT as a cookie setcookie('token', $jwt, time()+3600, '/');
Kami boleh menggunakan kod yang sama seperti pada bahagian pelayan untuk mengesahkan JWT yang dihantar oleh klien.
use FirebaseJWTJWT; // Get JWT from cookie or local storage $jwt = $_COOKIE['token']; // Verify JWT using secret key try { $decoded = JWT::decode($jwt, 'secret_key', array('HS256')); } catch (Exception $e) { // Handle invalid JWT } // Access the payload data $user_id = $decoded->user_id; $username = $decoded->username;
Ringkasan
JWT ialah mekanisme pengesahan yang selamat dan boleh dipercayai untuk aplikasi web moden. Pengesahan JWT boleh dilaksanakan dengan mudah menggunakan PHP dan perpustakaan JWT Firebase. Apabila melaksanakan pengesahan API, pastikan anda hanya menyimpan JWT di tempat yang selamat dan menggunakan HTTPS untuk penghantaran yang dilindungi.
Atas ialah kandungan terperinci Cara menggunakan JWT untuk pengesahan API dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!