在本文中,我將使用圖表以易於理解的方式解釋 API 令牌身份驗證。
在粗略了解 API 令牌身份驗證的工作原理後,我將透過基於程式碼的方式解釋 API 令牌身份驗證如何使用 Laravel Sanctum 進行工作。
透過閱讀本文,您將了解以下內容
用戶端將使用者的登入資訊(例如電子郵件、密碼)傳送到驗證伺服器。
認證伺服器驗證登入訊息,檢查使用者是否存在、密碼是否正確。
成功登入後,Auth 伺服器會為使用者產生一個 API 令牌。產生的API令牌儲存在personal_access_tokens表中。
客戶端向資源伺服器發送 API 請求,並將產生的 API 令牌附加到授權標頭。
資源伺服器驗證API令牌。如果 API 令牌有效,則處理請求。
資源伺服器回傳API回應。
此指令產生Laravel專案下API token認證所需的api.php檔案和遷移檔案。
然後,執行遷移:
這將建立 individual_access_tokens 表。
api.php
AuthController.php
api.php
AuthController.php
*注意:每次使用者登入時都會產生一個新的 API 令牌。
使用 Postman,發送具有以下條件的 API 請求以檢查回應。
成功登入後,會產生 API 令牌。
您可以檢查personal_access_tokens表來確認登入使用者的名稱和API令牌是否已儲存。
*注意:API回應中的令牌與personal_access_tokens表中的令牌不同,因為它在儲存到資料庫時經過雜湊處理。
以下是與使用者關聯的貼文的 CRUD 流程的範例程式碼。
範例程式碼:PostController.php
使用 Laravel Sanctum 限制存取權限,以便只有登入的使用者才能建立、編輯和刪除與使用者關聯的貼文。
傳送實際的 API 請求以驗證 API 令牌驗證是否正確執行。
也可以透過在路由檔案中寫入以下內容來限制對 apiResource 中設定的貼文的所有端點的存取。
api.php
在這種情況下,我們只想為 PostController 中的儲存、更新和刪除操作設定 API 令牌身份驗證。為此,請在 PostController 中建立一個建構函式方法,並將 auth:sanctum 中間件應用於 index 和 show 以外的所有操作。
PostController.php
現在,使用者在建立、更新或刪除貼文時必須在請求中包含令牌。
測試此設置,如果您發送沒有授權令牌的請求來創建帖子,則會返回帶有「未經身份驗證」訊息的 401 錯誤,並且帖子創建失敗。
如果包含授權令牌,則資料建立成功。
同樣,更新和刪除帖子的 API 要求發送請求時在 Authorization header 中包含 Token。
使用者存取限制已透過 API 令牌驗證實作。
不過,還是有問題。
在目前狀態下,經過驗證的使用者可以更新或刪除其他使用者的貼文。
新增一個流程來驗證使用者是否擁有貼文的所有權。
在 Laravel 策略檔案中編寫授權邏輯,以便只有擁有貼文所有權的使用者才能更新和刪除貼文。
PostController.php
PostPolicy.php
修改方法:
api.php
套用 auth::sanctum 中介軟體進行註銷路由並設定 API Token 驗證。
AuthController.php
伺服器將從資料庫中刪除目前的 API 令牌。這會使令牌無效並且無法再次使用。
伺服器向客戶端回傳回應,表示註銷成功。
在本文中,使用圖表以易於理解的方式解釋了 API 令牌身份驗證。
透過利用 Laravel Sanctum,可以使用 API 令牌實現簡單且安全的身份驗證,這允許客戶端以不同於基於會話的身份驗證的靈活性向單一使用者授予存取權限。使用中間件和策略,還可以有效保護 API 請求、限制存取以及驗證資源所有權。
以上是API令牌認證的詳細內容。更多資訊請關注PHP中文網其他相關文章!