


Pembangunan PHP: Cara menggunakan JWT untuk pengesahan dan kebenaran
Dalam pembangunan aplikasi web moden, keselamatan telah menjadi bahagian penting. Pengesahan dan kebenaran adalah penting dalam hal ini, kerana ia memastikan bahawa hanya pengguna yang dibenarkan boleh mengakses sumber yang dilindungi. Terdapat banyak mekanisme pengesahan dan kebenaran tersedia, yang mana JWT (JSON Web Token) merupakan mekanisme yang sangat popular kerana ia mudah, fleksibel, berskala dan selamat. Dalam artikel ini, kami akan meneroka cara menggunakan PHP dan JWT untuk pengesahan dan kebenaran.
Bahagian Pertama: Asas JWT
JSON Web Token (JWT) ialah standard terbuka untuk menghantar maklumat tuntutan dan pengesahan melalui web dengan selamat. Ia terdiri daripada tiga bahagian: pengepala, muatan dan tandatangan.
Pengepala mengandungi maklumat jenis algoritma dan token. Contohnya mungkin kelihatan seperti ini:
{ "alg": "HS256", "typ": "JWT" }
Muatan muatan mengandungi maklumat yang perlu dihantar. Contohnya, nama pengguna, peranan dan maklumat lain tentang pengguna. Contoh muatan mungkin kelihatan seperti ini:
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
Tandatangan ialah rentetan yang disulitkan yang mengandungi kunci yang digunakan untuk mengesahkan bahawa JWT adalah sah. Contoh tandatangan mungkin kelihatan seperti ini:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(claims), secret)
Bahagian 2: Melaksanakan JWT menggunakan PHP
Untuk menggunakan JWT untuk pengesahan dan kebenaran, kami memerlukan kelas PHP untuk menjana dan mengesahkan JWT. Mari kita lihat pelaksanaan kelas PHP JWT yang mudah.
<?php class JWT { private $header; private $payload; private $secret; public function __construct($header, $payload, $secret) { $this->header = $header; $this->payload = $payload; $this->secret = $secret; } public function encode() { $header = $this->base64UrlEncode(json_encode($this->header)); $payload = $this->base64UrlEncode(json_encode($this->payload)); $signature = $this->base64UrlEncode(hash_hmac('sha256', $header . '.' . $payload, $this->secret, true)); return $header . '.' . $payload . '.' . $signature; } public function decode($jwt) { $parts = explode('.', $jwt); $header = json_decode($this->base64UrlDecode($parts[0]), true); $payload = json_decode($this->base64UrlDecode($parts[1]), true); $signature = $this->base64UrlDecode($parts[2]); $result = hash_hmac('sha256', $parts[0] . '.' . $parts[1], $this->secret, true); if (hash_equals($result, $signature)) { return $payload; } else { return null; } } private function base64UrlEncode($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } private function base64UrlDecode($data) { return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT)); } }
Dalam kelas PHP ini, $header
, $payload
dan $secret
menyimpan pengepala JWT, muatan dan maklumat utama. Kaedah encode()
menggunakan header
, payload
dan secret
untuk menjana rentetan JWT. Kaedah decode()
menggunakan rentetan dan kunci JWT yang diberikan untuk mendapatkan maklumat muatan. Kaedah
base64UrlEncode()
dan base64UrlDecode()
digunakan untuk mengekod dan menyahkod pengepala dan muatan JWT.
Bahagian Tiga: Menggunakan JWT untuk Pengesahan dan Kebenaran
Kini, kami telah memahami asas JWT dan mempunyai kelas PHP JWT untuk menjana dan mengesahkan JWT. Jadi, bagaimana kita menggunakan JWT untuk pengesahan dan kebenaran?
Pertama, apabila pengguna log masuk, token boleh dihantar menggunakan JWT untuk mengesahkan identiti mereka. Pelayan akan menjana JWT dengan muatan nama pengguna dan kata laluan dan menghantarnya kepada pelanggan. Pelanggan akan menghantar token ini sebagai skim pengesahan Pembawa dalam pengepala Kebenaran pada setiap permintaan. Pelayan akan mengekstrak JWT daripada pengepala dan mengesahkan kesahihannya jika perlu.
Berikut ialah contoh pelaksanaan JWT untuk pengesahan dan kebenaran:
<?php // 使用 JWT 登录 function login($username, $password) { // 检查用户名和密码是否正确 $is_valid = validate_user_credentials($username, $password); if (!$is_valid) { return null; } // 生成 JWT $header = array('alg' => 'HS256', 'typ' => 'JWT'); $payload = array('sub' => $username); $jwt = new JWT($header, $payload, $GLOBALS['secret']); $token = $jwt->encode(); // 返回 JWT return $token; } // 验证 JWT function validate_token($jwt) { $jwt = new JWT($header, $payload, $GLOBALS['secret']); $payload = $jwt->decode($jwt); if ($payload == null) { return false; } // 验证成功 return true; } // 保护资源 function protect_resource() { // 检查 JWT 是否有效 $jwt = get_authorization_header(); if (!validate_token($jwt)) { http_response_code(401); exit(); } // 资源保护 // ... } // 从标头获取 JWT function get_authorization_header() { $headers = getallheaders(); if (isset($headers['Authorization'])) { return $headers['Authorization']; } return null; } // 检查用户名和密码是否正确 function validate_user_credentials($username, $password) { // 验证用户名和密码 // ... return true; } // 密钥 $GLOBALS['secret'] = "my-secret"; // 登录并获取 JWT $token = login("username", "password"); // 将 JWT 添加到标头 $headers = array('Authorization: Bearer ' . $token); // 保护资源 protect_resource($headers);
Dalam contoh ini, kaedah login()
mencipta JWT menggunakan kelas JWT
dan mengembalikannya untuk kegunaan pelanggan . Kaedah validate_token()
boleh mengesahkan kesahihan JWT. Jika JWT tidak sah, palsu akan dikembalikan. Kaedah
get_authorization_header()
mengekstrak JWT daripada pengepala permintaan. Kaedah protect_resource()
digunakan untuk melindungi sumber web. Jika JWT tidak sah, fungsi ini akan menimbulkan ralat 401.
Akhir sekali, kunci ditakrifkan dalam skop global, $GLOBALS ['secret']
, yang sepatutnya menjadi rentetan yang panjang. Sila ambil perhatian bahawa kata laluan ini adalah kata laluan rahsia dan tidak boleh dimasukkan dalam pangkalan kod anda. Biasanya, kunci ini disimpan dalam pembolehubah persekitaran dan diuruskan oleh sistem pengendalian yang menjalankan pelayan web.
Kesimpulan
JWT ialah mekanisme yang sangat mudah, fleksibel, berskala dan selamat yang boleh digunakan untuk pengesahan dan kebenaran dalam aplikasi web. Dalam artikel ini, kami telah melihat asas JWT dan melihat contoh kelas PHP untuk menjana dan mengesahkan JWT. Kami juga melihat cara JWT boleh digunakan untuk pengesahan dan kebenaran. Kini anda boleh mencuba JWT dalam aplikasi web anda untuk memastikan apl anda lebih selamat.
Atas ialah kandungan terperinci Pembangunan PHP: Cara menggunakan JWT untuk pengesahan dan kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

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)

Topik panas



Apabila kami tidak lagi mahu menggunakan Edisi Perkhidmatan Jangka Panjang Win10 Enterprise 2016, kami boleh memilih untuk beralih kepada Edisi Profesional Kaedahnya juga sangat mudah. Kami hanya perlu menukar beberapa kandungan dan memasang imej sistem. Cara menukar versi perkhidmatan jangka panjang win10 enterprise 2016 kepada versi profesional 1. Tekan win+R, dan kemudian masukkan "regedit" 2. Tampal laluan berikut terus dalam bar alamat di atas: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 , kemudian cari EditionID dan gantikan kandungan dengan "profesional" untuk mengesahkan

Dengan pembangunan Internet, semakin banyak laman web dan aplikasi perlu menyediakan antara muka API untuk interaksi data. Dalam kes ini, pengesahan dan penyulitan API menjadi isu yang sangat penting. Sebagai mekanisme pengesahan dan penyulitan yang popular, JWT dan JWE semakin banyak digunakan dalam PHP. Nah, artikel ini akan menerangkan cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP. Konsep asas JWT JWT adalah singkatan kepada JSONWe

JWT (JSONWebToken) ialah mekanisme pengesahan dan kebenaran ringan yang menggunakan objek JSON sebagai token keselamatan untuk menghantar maklumat identiti pengguna dengan selamat antara berbilang sistem. ThinkPHP6 ialah rangka kerja MVC yang cekap dan fleksibel berdasarkan bahasa PHP Ia menyediakan banyak alat dan fungsi yang berguna, termasuk mekanisme pengesahan JWT. Dalam artikel ini, kami akan memperkenalkan cara menggunakan ThinkPHP6 untuk pengesahan JWT untuk memastikan keselamatan dan kebolehpercayaan aplikasi web

Analisis Teknologi Penjanaan dan Pengesahan Token JWT Selamat dalam PHP Dengan pembangunan aplikasi rangkaian, pengesahan dan kebenaran pengguna menjadi semakin penting. JsonWebToken (JWT) ialah standard terbuka (RFC7519) untuk menghantar maklumat dengan selamat dalam aplikasi web. Dalam pembangunan PHP, ia telah menjadi amalan biasa untuk menggunakan token JWT untuk pengesahan dan kebenaran pengguna. Artikel ini akan memperkenalkan penjanaan token JWT selamat dan teknologi pengesahan dalam PHP. 1. Pengetahuan asas JWT dalam memahami cara menjana dan

OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT Dengan peningkatan aplikasi mudah alih dan trend pemisahan bahagian hadapan dan belakang, OAuth telah menjadi bahagian yang amat diperlukan dalam aplikasi web moden. OAuth ialah protokol kebenaran yang melindungi sumber pengguna daripada capaian yang tidak dibenarkan dengan menyediakan proses dan mekanisme piawai. Dalam artikel ini, kita akan belajar cara membuat pelayan kebenaran OAuth berasaskan JWT (JSONWebTokens) menggunakan PHP. JWT ialah sejenis

Vue.js ialah rangka kerja JavaScript yang popular untuk membina aplikasi web dinamik. Melaksanakan pengesahan log masuk pengguna adalah salah satu bahagian yang diperlukan untuk membangunkan aplikasi web. Artikel ini akan memperkenalkan panduan lengkap untuk melaksanakan pengesahan log masuk menggunakan Vue.js, API, JWT dan axios. Mencipta Aplikasi Vue.js Mula-mula, kita perlu mencipta aplikasi Vue.js baharu. Kita boleh mencipta aplikasi Vue.js menggunakan VueCLI atau secara manual. Pasang axiosax

Cara menggunakan Flask-Security untuk melaksanakan pengesahan dan kebenaran pengguna Pengenalan: Dalam aplikasi web moden, pengesahan dan kebenaran pengguna adalah fungsi penting. Untuk memudahkan proses ini, Flask-Security ialah sambungan yang sangat berguna yang menyediakan satu siri alatan dan fungsi untuk menjadikan pengesahan dan kebenaran pengguna mudah dan mudah. Artikel ini akan memperkenalkan cara menggunakan Flask-Security untuk melaksanakan pengesahan dan kebenaran pengguna. 1. Pasang sambungan Flask-Security: pada permulaan

Douyin, sebagai platform media sosial yang popular pada masa ini, bukan sahaja menyediakan orang ramai dengan banyak kandungan hiburan, tetapi juga telah menjadi saluran penting bagi banyak jenama dan peniaga untuk mempromosikan produk dan mencapai jualan. Antaranya, produk menghiris dan menjual Douyin telah menjadi kaedah pemasaran yang baru dan cekap. Jadi, bagaimana anda mendapatkan kebenaran untuk produk hirisan Douyin 1. Bagaimanakah anda mendapatkan kebenaran untuk produk hirisan Douyin menguraikan video panjang menjadi klip video pendek dan membenamkan maklumat promosi produk ke dalamnya untuk menarik penonton? untuk membeli. . Apabila menghiris dan menjual barang di Douyin, langkah pertama ialah mendapatkan kebenaran video asal. Apabila mencari pemberi lesen yang sesuai, anda boleh mempertimbangkan untuk menggunakan pelbagai saluran seperti platform Douyin, media sosial dan forum industri. Cari pencipta atau pemegang hak cipta dengan kandungan video popular dan berhubung secara aktif dengan mereka,
