Xác thực JSON Web Token (JWT) trong PHP

Bài viết hướng dẫn cách sử dụng JSON Web Token (JWT) để xác thực trong PHP. Sử dụng JWT giúp bảo mật thông tin giữa client và server một cách hiệu quả và dễ dàng triển khai trong các ứng dụng web.

Trong bài viết này, chúng ta sẽ khám phá cách sử dụng JWT để xác thực người dùng trong ứng dụng PHP. JWT là một chuẩn mở, giúp truyền tải dữ liệu an toàn giữa client và server thông qua các token mã hóa, dễ dàng kiểm tra và xác nhận tính xác thực của người dùng.

Mã PHP:

<?php
// Thư viện JWT cần thiết, có thể cài đặt qua Composer
require 'vendor/autoload.php';
use \Firebase\JWT\JWT;

// Khóa bí mật để mã hóa JWT
$secretKey = 'your-secret-key';

// Dữ liệu người dùng, được mã hóa thành token
$data = [
    'id' => 123,
    'email' => '[email protected]',
    'exp' => time() + 3600 // Hết hạn sau 1 giờ
];

// Mã hóa token
$jwt = JWT::encode($data, $secretKey);

// Xuất token
echo "JWT Token: " . $jwt . "\n";

// Giải mã token
try {
    $decoded = JWT::decode($jwt, $secretKey, ['HS256']);
    echo "Decoded Data:\n";
    print_r($decoded);
} catch (Exception $e) {
    echo "Token không hợp lệ: " . $e->getMessage();
}
?>

Giải thích chi tiết từng dòng code:

  1. require 'vendor/autoload.php';: Nạp các thư viện cần thiết từ Composer, bao gồm thư viện Firebase JWT.
  2. use \Firebase\JWT\JWT;: Sử dụng lớp JWT để mã hóa và giải mã token.
  3. $secretKey: Đây là khóa bí mật được dùng để mã hóa và giải mã JWT. Khóa này cần được bảo mật tuyệt đối.
  4. $data: Dữ liệu người dùng được mã hóa thành JWT. Ở đây có chứa thông tin id, emailexp (thời gian hết hạn).
  5. JWT::encode($data, $secretKey): Mã hóa mảng dữ liệu thành JWT token bằng khóa bí mật.
  6. JWT::decode($jwt, $secretKey, ['HS256']): Giải mã JWT bằng khóa bí mật và kiểm tra xem token có hợp lệ không.
  7. catch (Exception $e): Bắt các lỗi xảy ra nếu token không hợp lệ hoặc không giải mã được.

Yêu cầu hệ thống:

  • PHP >= 7.2
  • Composer
  • Thư viện Firebase JWT (firebase/php-jwt)

Cách cài đặt các thư viện để chạy được đoạn mã PHP trên:

  • Cài Composer: https://getcomposer.org/download/
  • Chạy lệnh sau để cài thư viện JWT:
    composer require firebase/php-jwt
    

Lời khuyên:

  • Không nên lưu khóa bí mật trên cùng hệ thống với mã nguồn để tăng cường bảo mật.
  • Cần cấu hình thời gian hết hạn hợp lý cho JWT để tránh các vấn đề bảo mật tiềm ẩn.


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Tổng hợp tất cả các cách nối chuỗi trong PHP

Hướng dẫn chi tiết về tất cả các cách nối chuỗi trong PHP, bao gồm sử dụng toán tử nối chuỗi, hàm nối chuỗi, và các phương pháp khác.
Cách sử dụng hàm str_pad() trong PHP

Hướng dẫn chi tiết cách sử dụng hàm `str_pad()` trong PHP để lấp đầy chuỗi với các ký tự theo một độ dài nhất định. Bài viết sẽ giới thiệu các cách sử dụng phổ biến của hàm này trong lập trình.
Cách chuyển chuỗi Markdown sang HTML bằng PHP

Hướng dẫn cách chuyển đổi chuỗi Markdown sang HTML trong PHP bằng cách sử dụng thư viện `Parsedown`, giúp bạn hiển thị nội dung Markdown một cách hiệu quả trên trang web của mình.
Lấy nội dung từ database MySQL bằng PHP

Hướng dẫn cách lấy nội dung từ database MySQL sử dụng PHP. Bao gồm mã nguồn và giải thích chi tiết từng bước để kết nối và truy vấn cơ sở dữ liệu MySQL.
Ví dụ về Singleton Pattern trong PHP

Hướng dẫn về Singleton Pattern trong PHP, bao gồm ví dụ cụ thể giúp bạn hiểu cách sử dụng mẫu thiết kế này trong lập trình hướng đối tượng.
Cập nhật nhiều cột trong MySQL bằng PHP

Hướng dẫn cách cập nhật nhiều cột trong MySQL bằng PHP. Mã PHP này sử dụng câu lệnh UPDATE để thay đổi nhiều giá trị của các cột trong cơ sở dữ liệu MySQL.
Kiểm tra chuỗi có phải là chuỗi nhị phân hay không bằng PHP

Hướng dẫn cách kiểm tra chuỗi trong PHP xem chuỗi đó có phải là chuỗi nhị phân hay không (chỉ bao gồm các ký tự `0` và `1`). Bài viết sử dụng các hàm xử lý chuỗi cơ bản trong PHP.
Tạo mã Captcha bằng PHP

Hướng dẫn cách tạo mã Captcha đơn giản bằng PHP để bảo vệ website khỏi các hành vi spam và bot tự động.
Cách loại bỏ dấu câu từ chuỗi trong PHP

Hướng dẫn cách loại bỏ dấu câu từ một chuỗi trong PHP. Bài viết này giải thích cách sử dụng hàm `preg_replace` để xóa bỏ các ký tự dấu câu khỏi chuỗi.
Cập nhật dữ liệu trong MySQL bằng PHP

Hướng dẫn cách cập nhật dữ liệu trong MySQL bằng PHP. Đoạn mã này sẽ sử dụng câu lệnh SQL UPDATE để thay đổi thông tin trong cơ sở dữ liệu MySQL một cách dễ dàng.

Đã thêm vào giỏ hàng