Mari kita bincangkan tentang cara menggunakan JWT untuk pengesahan identiti dalam PHP

PHPz
Lepaskan: 2023-04-11 14:16:02
asal
1193 orang telah melayarinya

JWT (JSON Web Token) ialah standard terbuka untuk pengesahan dan kebenaran. JWT terdiri daripada tiga bahagian iaitu Header, Payload dan Signature. Apabila menggunakan JWT, pelayan akan menghantar JWT kepada klien, dan klien akan membawa JWT dalam permintaan seterusnya Pelayan akan mengesahkan kesahihan permintaan dengan mengesahkan tandatangan dan tempoh sah JWT.

PHP ialah bahasa pembangunan web yang biasa digunakan, yang menyediakan banyak kaedah pelaksanaan JWT. Berikut akan memperkenalkan cara menggunakan JWT untuk pengesahan identiti dalam PHP.

  1. Pasang JWT

Sebelum menggunakan JWT, anda perlu memasang pakej PHP JWT. Anda boleh memasangnya melalui arahan berikut:

composer require firebase/php-jwt
Salin selepas log masuk

Selepas pemasangan selesai, anda boleh memperkenalkan JWT ke dalam projek:

require_once('vendor/autoload.php');
use Firebase\JWT\JWT;
Salin selepas log masuk
  1. Jana JWT

Semasa pengesahan identiti, pelayan perlu menjana JWT dan menghantarnya kepada pelanggan. Proses menjana JWT termasuk menjana Header, Payload dan Tandatangan.

// 将需要编码的数据放到一个关联数组中
$payload = array(
    "user_id" => 123456,
);

// 生成Header
$header = array(
    "alg" => "HS256",  // 采用的加密算法
    "typ" => "JWT"
);

// 生成JWT
$jwt = JWT::encode($payload, SECRET_KEY, 'HS256');
// SECRET_KEY为加密密钥
Salin selepas log masuk

Selepas menjana JWT, hantar sahaja kepada pelanggan.

  1. Sahkan JWT

Dalam permintaan seterusnya daripada pelanggan, JWT perlu dibawa dan disahkan oleh pelayan untuk mengesahkan kesahihan permintaan tersebut. Proses pelayan yang mengesahkan JWT termasuk menyahkod tiga bahagian Pengepala, Muatan dan Tandatangan, dan mengesahkan sama ada Tandatangan itu betul dan sama ada tempoh sah telah tamat.

// 解码JWT
$jwt_decoded = JWT::decode($jwt, SECRET_KEY, array('HS256'));

// 验证Signature和有效期
$jwt_verified = JWT::verify($jwt, SECRET_KEY, array('HS256'));
Salin selepas log masuk

Jika kedua-dua Tandatangan dan tempoh sah disahkan, pemprosesan permintaan boleh diteruskan. Jika pengesahan tidak lulus, permintaan itu perlu ditolak.

  1. Mengendalikan tamat tempoh JWT

JWT mempunyai tempoh sah dan boleh digunakan untuk berbilang permintaan semasa tempoh sah. Selepas tamat tempoh, pelanggan perlu mendapatkan semula JWT dan meletakkannya dalam permintaan. Apabila memproses JWT, tempoh sahnya perlu disemak.

try {
    // 解码JWT
    $jwt_decoded = JWT::decode($jwt, SECRET_KEY, array('HS256'));
    // 检查有效期
    if ($jwt_decoded->exp < time()) {
        // JWT已过期
        throw new Exception('JWT已过期');
    }
} catch (Exception $e) {
    // JWT无效或已过期
    // 需要重新获取JWT或返回错误
}
Salin selepas log masuk
  1. Ringkasan

Menggunakan JWT untuk pengesahan ialah kaedah yang mudah dan berkesan. PHP menyediakan banyak pelaksanaan JWT, menjadikannya sangat mudah untuk menggunakan JWT dalam PHP. Walau bagaimanapun, anda perlu memberi perhatian kepada tempoh sah JWT dan penyahkodan dan pengesahan yang betul. Di atas adalah langkah dan langkah berjaga-jaga untuk menggunakan PHP untuk melaksanakan pengesahan JWT.

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menggunakan JWT untuk pengesahan identiti dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan