Rumah >pembangunan bahagian belakang >tutorial php >Pembangunan PHP: Cara menggunakan JWT untuk melindungi maklumat pengesahan pengguna

Pembangunan PHP: Cara menggunakan JWT untuk melindungi maklumat pengesahan pengguna

王林
王林asal
2023-06-15 20:58:421717semak imbas

Dalam pembangunan aplikasi web hari ini, melindungi maklumat pengesahan identiti pengguna adalah penting. JWT (JSON Web Token) ialah kaedah pengesahan identiti selamat yang menggunakan format JSON untuk mengekod maklumat pengesahan dan menggunakan tandatangan untuk melindungi integriti data. Artikel ini akan memperkenalkan cara menggunakan JWT untuk melindungi maklumat pengesahan pengguna dalam pembangunan PHP.

  1. Pasang JWT

Pertama, kita perlu memasang JWT dalam projek PHP. Anda boleh menggunakan alat Komposer untuk memasang JWT, arahannya adalah seperti berikut:

composer require firebase/php-jwt
  1. Jana JWT

Selepas pengguna berjaya mengesahkan, kita perlu menjana JWT dan mengembalikannya ke hujung pelanggan. Dalam PHP, anda boleh menjana JWT menggunakan kod berikut:

use FirebaseJWTJWT;

$payload = array(
    "user_id" => 1234,
    "email" => "john@doe.com"
);

$secret_key = "secret_key";
$jwt = JWT::encode($payload, $secret_key);

Gunakan kaedah JWT::encode() untuk menjana JWT. Parameter pertama ialah tatasusunan bersekutu yang mengandungi maklumat pengguna, dan parameter kedua ialah kunci yang digunakan untuk menandatangani JWT. JWT yang dihasilkan boleh dikembalikan terus kepada pelanggan.

  1. Sahkan JWT

Sebaik sahaja pelanggan menerima JWT, ia menyimpan JWT secara setempat dan menghantarnya dengan setiap permintaan supaya pelayan boleh mengesahkan identiti pengguna . Dalam PHP, untuk mengesahkan JWT, anda perlu menggunakan kod berikut:

use FirebaseJWTJWT;

$jwt = "generated_jwt";

$secret_key = "secret_key";
try {
    $decoded = JWT::decode($jwt, $secret_key, array("HS256"));
    $user_id = $decoded->user_id;
    $email = $decoded->email;
} catch (Exception $e) {
    // JWT 验证失败
}

Gunakan kaedah JWT::decode() untuk mengesahkan JWT. Parameter pertama ialah JWT yang akan disahkan, parameter kedua ialah kunci yang digunakan untuk menandatangani JWT, dan parameter ketiga menentukan algoritma tandatangan yang digunakan. Jika pengesahan JWT berjaya, objek $dekod yang mengandungi maklumat pengguna akan dikembalikan.

  1. Kesahan tersuai dan masa tamat

Secara lalai, JWT tidak mengandungi tempoh sah atau masa tamat, jadi ia boleh digunakan selama-lamanya. Untuk melindungi maklumat pengesahan identiti pengguna dengan lebih baik, kami boleh menetapkan tempoh sah dan masa tamat JWT.

use FirebaseJWTJWT;

$payload = array(
    "user_id" => 1234,
    "email" => "john@doe.com",
    "exp" => time() + 3600,  // 有效期为 1 小时
    "nbf" => time() + 30  // 在 30 秒内无效
);

$secret_key = "secret_key";
$jwt = JWT::encode($payload, $secret_key);

Dalam kod di atas, kami mengisytiharkan kesahihan dan masa tamat tempoh JWT dengan menetapkan "exp" (tempoh sah) dan "nbf" (bukan sebelum ini). Apabila mengesahkan JWT menggunakan kaedah JWT::decode(), pengecualian akan dilemparkan jika JWT telah tamat tempoh atau belum memasuki tempoh sahnya.

  1. Ringkasan

Menggunakan JWT dalam pembangunan PHP ialah kaedah pengesahan selamat yang boleh membantu kami melindungi maklumat pengesahan pengguna dengan lebih baik. Kami boleh menggunakan perpustakaan PHP-JWT untuk menjana dan mengesahkan JWT, dan boleh menetapkan masa sah dan tamat tempoh untuk meningkatkan keselamatan. Untuk memastikan keselamatan aplikasi kami, kami mesti mengendalikan kunci JWT dengan berhati-hati dan mempunyai pengendalian ralat yang betul.

Atas ialah kandungan terperinci Pembangunan PHP: Cara menggunakan JWT untuk melindungi maklumat pengesahan pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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