首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PEAR Auth_HTTP 套件快速實作 HTTP Basic/Digest 認證

     編輯:PHP 綜合知識

PEAR Auth_HTTP 提供開箱即用的 HTTP 認證(Basic/Digest),支援多種儲存後端(資料庫、檔案、LDAP 等),適合快速為舊專案或內部工具加上存取控制。

安裝

pear install Auth_HTTP
# 或 composer
composer require pear/auth_http

資料庫資料表結構

CREATE TABLE test_http (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL UNIQUE,
    passwd VARCHAR(255) NOT NULL,
    userid INT,
    telephone VARCHAR(20),
    email VARCHAR(100)
);

基本使用範例

<?php
require_once 'Auth/HTTP.php';

$options = [
    'dsn' => 'mysql://root:password@localhost/test', // PDO DSN 格式
    'table' => 'test_http',
    'usernamecol' => 'name',
    'passwordcol' => 'passwd',
    'cryptType' => 'md5',          // 密碼雜湊:md5, sha1, plain 等
    'db_fields' => '*',            // 額外欄位載入至 Auth 物件
];

$auth = new Auth_HTTP('DB', $options);
$auth->setRealm('Admin Area');           // 瀏覽器彈窗標題
$auth->setCancelText('Error 401: Unauthorized'); // 取消/失敗訊息
$auth->start();                          // 開始認證流程

if ($auth->getAuth()) {
    // 認證成功
    echo "Hello, {$auth->username}!";
    // 取得額外欄位
    echo "User ID: " . $auth->getAuthData('userid');
    echo "Email: " . $auth->getAuthData('email');
} else {
    // getAuth() 為 false 時,start() 已送出 401 標頭並 exit
    // 此處程式碼不會執行
}
?>

進階選項

選項說明
db_fields指定額外欄位,以逗號分隔或 '*' 全部,可用 getAuthData() 取得
cryptTypemd5, sha1, plain, crypt 或自訂回呼函式
sessionSharing是否共享 PHP Session,預設 true
authoritativetrue 時 Auth 失敗直接 exit,false 可自行處理

Digest 認證(較安全)

$options['digest'] = true; // 啟用 Digest
$auth = new Auth_HTTP('DB', $options);
// 密碼欄位需儲存 HA1 = MD5(username:realm:password)
// 可用 Auth_HTTP::getAuthData() 計算

整合既有專案

在需保護的腳本最頂端 require_once 'auth.php';,auth.php 內含上述認證邏輯。若使用前端控制器模式,可在路由中間件執行。

注意與替代方案

  • PEAR 套件維護較緩慢,新專案建議使用現代框架內建認證(Laravel Sanctum, Symfony Security)。
  • HTTP Basic 認證每請求傳送 Base64 編碼帳密,**必須搭配 HTTPS** 使用。
  • 無法自訂登入頁面(瀏覽器原生彈窗),用戶體驗較差。
  • 無法實作「記住我」、OAuth、MFA 等現代功能。

總結

Auth_HTTP 適合:內部管理介面、快速原型、舊系統最小改動加鎖。生產環境面向用戶的系統,請採用完整認證授權框架。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved