Laravel開發:如何使用Laravel Sanctum實現API身分驗證?
隨著RESTful API的普及和應用的廣泛使用,越來越多的應用程式需要對API進行身份驗證和授權,因此API安全性已成為當今軟體開發中極其重要的一個面向。 Laravel Sanctum是Laravel 7.0引入的開箱即用的輕量級身份驗證系統,它旨在讓API身份驗證變得簡單且安全。在本篇文章中,我們將介紹如何在Laravel中使用Sanctum來確保API的安全性。
- 安裝Laravel Sanctum
在開始之前,我們需要確認已經安裝好Laravel 7.0 版本。然後我們可以使用composer安裝Laravel Sanctum依賴:
composer require laravel/sanctum
安裝完Sanctum之後,在config/app.php
檔案中加入以下程式碼:
'providers' => [ // ... LaravelSanctumSanctumServiceProvider::class, ], 'aliases' => [ //... 'Sanctum' => LaravelSanctumSanctum::class, ]
這樣,Laravel應用程式就已經使用了Sanctum提供的服務和功能。
- 設定資料庫
接下來,在執行資料庫遷移之前,我們需要設定Sanctum的資料庫表。 Larave lSanctum預設提供了一個包含以下欄位的personal_access_tokens
資料庫表:
id
:令牌的唯一識別碼- ##tokenable_type
:與令牌關聯的模型的類別名稱
- tokenable_id
:與令牌關聯的模型的ID
:令牌的名稱token
:API令牌的值
#abilities
:令牌的授權#在建立
personal_access_tokens
AuthServiceProvider中註冊以下內容來完成:
use LaravelSanctumSanctum; //... public function boot() { $this->registerPolicies(); Sanctum::ignoreMigrations(); Sanctum::actingAs( null, [ 'superuser' ]); }
- Sanctum::ignoreMigrations()
- 用於阻止Laravel在 artisan migrate
Sanctum::actingAs()還提供了一種僅用於開發的方法,該方法在沒有使用者驗證的情況下模擬使用者身分。
然後,我們需要執行以下命令來建立
personal_access_tokens表:
php artisan migrate
建立API令牌Laravel Sanctum為我們提供了兩種方式來為API產生令牌。一種是
CreateToken
- hasApiTokens()
- 函數來配合 createToken()
// use the HasApiTokens trait within your User Model use LaravelSanctumHasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; // ... } // create a Token with User ID and given Abilities $personalAccessToken = $user->createToken('API Token', ['server:get','server:post']);
這裡我們在使用者模型中使用了
HasApiTokensTrait,以便在使用者模型中實作API令牌功能。我們使用createToken方法來建立一個API令牌,並在建立令牌時指定了一個可選的名稱和授權的權限鍵。
- 保護API路由
sanctum中介軟體來保護API路由,以便驗證請求中的令牌:
// A Group of API routes that require a valid Token Route::group(['middleware' => 'auth:sanctum'], function () { Route::get('/user', function (Request $request) { return $request->user(); }); });
在這段程式碼中,我們定義了一個包含驗證
sanctum中間件的路由群組。路由群組中包含一條路由,該路由僅需要一個有效的Token才能存取。
- 使用Bearer令牌
Bearer令牌是透過HTTP
Authorization頭來傳送API令牌的最常見方法。可以透過在請求頭中加入
Authorization: Bearer {{$personalAccessToken->plainTextToken}}
curl -H "Authorization: Bearer xxxxx" http://example.com/api/user
#撤銷API令牌
### ####最後,我們需要了解如何撤銷API令牌。我們可以使用###tokens()->delete()###函數來刪除某個使用者的所有API令牌,或使用###revoke()###函數來撤銷單一API令牌:# ##$user->tokens()->delete(); $personalAccessToken->revoke();
以上是Laravel開發:如何使用Laravel Sanctum實現API身分驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

想要學習 Laravel 框架,但苦於沒有資源或經濟壓力?本文為你提供了免費學習 Laravel 的途徑,教你如何利用網絡平台、文檔和社區論壇等資源,從入門到掌握,為你的 PHP 開發之旅奠定堅實基礎。

Laravel 提供了一個全面的 Auth 框架,用於實現用戶登錄功能,包括:定義用戶模型(Eloquent 模型)創建登錄表單(Blade 模板引擎)編寫登錄控制器(繼承 Auth\LoginController)驗證登錄請求(Auth::attempt)登錄成功後重定向(redirect)考慮安全因素:哈希密碼、防 CSRF 保護、速率限制和安全標頭。此外,Auth 框架還提供重置密碼、註冊和驗證電子郵件等功能。詳情請參閱 Laravel 文檔:https://laravel.com/doc

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

在面向初学者的 Laravel 框架版本选择指南中,本文深入探討了 Laravel 的版本差異,旨在協助初學者在眾多版本之間做出明智的選擇。我們將重點介紹每個版本的關鍵特徵、比較它們的優缺點,並提供有用的建議,幫助新手根據他們的技能水準和項目需求挑選最合適的 Laravel 版本。對於初學者來說,選擇一個合適的 Laravel 版本至關重要,因為它可以顯著影響他們的學習曲線和整體開發體驗。

Laravel框架內置了多種方法來方便地查看其版本號,滿足開發者的不同需求。本文將探討這些方法,包括使用Composer命令行工具、訪問.env文件或通過PHP代碼獲取版本信息。這些方法對於維護和管理Laravel應用程序的版本控制至關重要。

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在開發中各有優缺點。本文將深入比較這兩者,重點介紹它們的架構、特性和性能差異,以幫助開發者根據其特定項目需求做出明智的選擇。
