php 中的 401 unauthorized 錯誤表示請求未經授權,可能是由于:1. 客戶端未提供憑據;2. 憑據無效;3. 客戶端無權訪問資源。為防止未經授權的訪問,php 提供了授權機制,包括:1. 基本授權(http 身份驗證);2. 令牌授權(jwt/oauth);3. 會話(存儲受身份驗證用戶信息)。
深入理解 PHP 401 Unauthorized 及授權機制
簡介
PHP 中的 401 Unauthorized 錯誤表示請求未經授權。這種錯誤通常是由于以下原因之一:
客戶端未提供憑據。
提供的憑據無效。
客戶端沒有訪問指定資源的權限。
授權機制
為了防止未經授權的訪問,PHP 提供了多種授權機制,包括:
基本授權:使用用戶名和密碼進行 HTTP 身份驗證。
令牌授權:使用 JSON Web 令牌 (JWT) 或 OAuth 2.0 令牌進行身份驗證。
會話:使用 PHP 會話存儲受身份驗證用戶的詳細信息。
實戰案例:
假設我們有一個 PHP 應用程序,需要保護一個名為 “secret.php” 的文件。我們可以使用基本授權來實現這一點:
<?php if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) { // 拒絕訪問并顯示錯誤消息 header('HTTP/1.1 401 Unauthorized'); exit; } // 驗證憑據 if ($_SERVER['PHP_AUTH_USER'] != 'username' || $_SERVER['PHP_AUTH_PW'] != 'password') { // 驗證失敗 header('HTTP/1.1 401 Unauthorized'); exit; } // 允許訪問 // ...
登錄后復制
注意:
基本授權是一種簡單且常用的授權機制,但不太安全,因為憑據以明文形式傳輸。
對于更安全的選項,請考慮使用令牌或會話,因為它們不會傳輸憑據。