亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

API令牌認證

Nov 09, 2024 pm 08:44 PM

介紹

在本文中,我將使用圖表以易于理解的方式解釋 API 令牌身份驗證。
在粗略了解 API 令牌身份驗證的工作原理后,我將通過基于代碼的方式解釋 API 令牌身份驗證如何使用 Laravel Sanctum 進行工作。

通過閱讀本文,您將了解以下內(nèi)容

  • API 令牌身份驗證如何工作
  • 如何安裝 Laravel Sanctum
  • 在用戶注冊和登錄時生成 API 令牌
  • API 令牌身份驗證以限制訪問并驗證資源所有權(quán)
  • 注銷時刪除 API 令牌

API 令牌身份驗證的工作原理

API Token Authentication

1.用戶注冊/登錄請求

客戶端將用戶的登錄信息(例如電子郵件、密碼)發(fā)送到身份驗證服務器。

2.用戶認證

認證服務器驗證登錄信息,檢查用戶是否存在、密碼是否正確。

3.? API 令牌生成

成功登錄后,Auth 服務器會為用戶生成一個 API 令牌。生成的API令牌存儲在personal_access_tokens表中。

4.?API 請求

客戶端向資源服務器發(fā)送 API 請求,并將生成的 API 令牌附加到授權(quán)標頭。

5.? API 令牌驗證

資源服務器驗證API令牌。如果 API 令牌有效,則處理請求。

6. API 響應

資源服務器返回API響應。

如何安裝 Laravel Sanctum

sail php artisan install:api

該命令生成Laravel項目下API token認證所需的api.php文件和遷移文件。

然后,執(zhí)行遷移:

sail artisan migrate

這將創(chuàng)建 individual_access_tokens 表。

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE

在用戶注冊和登錄時生成 API 令牌

API Token Authentication

示例代碼

api.php

Route::post('/register', [AuthController::class, 'register']);

AuthController.php

public function register(Request $request)
{
    $fields = $request->validate([
        'name' => 'required|max:255',
        'email' => 'required|email|unique:users',
        'password' => 'required|confirmed'
    ]);

    $user = User::create($fields);

    $token = $user->createToken($request->name);

    return [
        'user' => $user,
        'token' => $token->plainTextToken
    ];
}

用戶注冊

  1. 用戶注冊。
  2. 新用戶保存在用戶表中。
  3. 生成 API 令牌。 (創(chuàng)建令牌)
  4. 生成的API token和用戶信息存儲在personal_access_tokens表中,并向用戶提供API token。

示例代碼

api.php

*Route*::post('/login', [*AuthController*::class, 'login']);

AuthController.php

sail php artisan install:api

用戶登錄

  1. 用戶登錄。
  2. 驗證用戶是否存在于用戶表中。
  3. API token是登錄成功后生成的。 (創(chuàng)建令牌)
  4. 生成的API token和用戶信息存儲在personal_access_tokens表中,并向用戶提供API token。

*注意:每次用戶登錄時都會生成一個新的 API 令牌。

API 令牌生成

使用 Postman,發(fā)送具有以下條件的 API 請求以檢查響應。

API Token Authentication

成功登錄后,會生成 API 令牌。

API Token Authentication

您可以檢查personal_access_tokens表來確認登錄用戶的名稱和API令牌是否已保存。
*注意:API響應中的令牌與personal_access_tokens表中的令牌不同,因為它在存儲到數(shù)據(jù)庫時經(jīng)過哈希處理。

API令牌認證

API Token Authentication

  1. 用戶發(fā)送 API 請求并在授權(quán)標頭中包含 API 令牌。
  2. auth:sanctum 中間件將從 API 請求接收到的 API 令牌與存儲在 individual_access_tokens 表中的 API 令牌進行匹配。
  3. 如果 API 令牌成功通過身份驗證,資源服務器將處理 API 請求。
  4. 經(jīng)過身份驗證的用戶可以更新或刪除帖子。
  5. 資源服務器返回API響應。

限制對帖子功能的訪問

以下是與用戶關(guān)聯(lián)的帖子的 CRUD 過程的示例代碼。

示例代碼:PostController.php

使用 Laravel Sanctum 限制訪問權(quán)限,以便只有登錄的用戶才能創(chuàng)建、編輯和刪除與用戶關(guān)聯(lián)的帖子。
發(fā)送實際的 API 請求以驗證 API 令牌身份驗證是否正確執(zhí)行。

訪問控制標準

用戶API

  • 索引,顯示 這些操作提供一般公共信息,不需要 API 令牌身份驗證,以獲得更好的用戶體驗和 SEO。
  • 存儲、更新、刪除 為了防止未經(jīng)授權(quán)的訪問并保持數(shù)據(jù)完整性,需要 API 令牌身份驗證。

管理API

  • 索引、顯示、存儲、更新、刪除 為了增強安全性,應該通過要求所有控制器操作進行用戶身份驗證來保護不需要公開的 API。

編碼

還可以通過在路由文件中寫入以下內(nèi)容來限制對 apiResource 中設置的帖子的所有端點的訪問。

api.php

sail php artisan install:api
sail artisan migrate

在這種情況下,我們只想為 PostController 中的存儲、更新和刪除操作設置 API 令牌身份驗證。為此,請在 PostController 中創(chuàng)建一個構(gòu)造函數(shù)方法,并將 auth:sanctum 中間件應用于除 index 和 show 之外的所有操作。

PostController.php

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE

現(xiàn)在,用戶在創(chuàng)建、更新或刪除帖子時必須在請求中包含令牌。

測試此設置,如果您發(fā)送沒有授權(quán)令牌的請求來創(chuàng)建帖子,則會返回帶有“未經(jīng)身份驗證”消息的 401 錯誤,并且帖子創(chuàng)建失敗。

API Token Authentication

如果包含授權(quán)令牌,則數(shù)據(jù)創(chuàng)建成功。

API Token Authentication

同樣,更新和刪除帖子的 API 要求發(fā)送請求時在 Authorization header 中包含 Token。

所有權(quán)驗證后

用戶訪問限制已通過 API 令牌身份驗證實現(xiàn)。
不過,還是有問題。
在當前狀態(tài)下,經(jīng)過身份驗證的用戶可以更新或刪除其他用戶的帖子。
添加一個流程來驗證用戶是否擁有帖子的所有權(quán)。

API Token Authentication

  1. 用戶發(fā)送 API 請求并在授權(quán)標頭中包含 API 令牌。
  2. auth:sanctum 中間件將從 API 請求接收到的 API 令牌與存儲在 individual_access_tokens 表中的 API 令牌進行匹配。
  3. auth:sanctum 中間件獲取與 API 令牌關(guān)聯(lián)的用戶并檢查該用戶是否擁有目標帖子的所有權(quán)。
  4. 如果 API 令牌成功驗證并且用戶擁有目標帖子的所有權(quán),資源服務器將處理 API 請求。
  5. 擁有帖子所有權(quán)的經(jīng)過身份驗證的用戶可以更新和刪除帖子。
  6. 資源服務器返回API響應。

編碼

在 Laravel 策略文件中編寫授權(quán)邏輯,以便只有擁有帖子所有權(quán)的用戶才能更新和刪除帖子。

PostController.php

sail php artisan install:api
  • 收到請求
    • 用戶發(fā)送 API 請求并在授權(quán)標頭中包含 API 令牌。
  • 令牌驗證
    • 資源服務器從 API 請求的 Authorization 標頭中獲取 API 令牌。 然后驗證從請求接收到的 API 令牌是否與存儲在 individual_access_tokens 表中的 API 令牌匹配。
  • 用戶識別
    • 如果令牌有效,則識別與令牌關(guān)聯(lián)的用戶。 我們可以通過 $request->user() 方法獲取已識別的用戶。
  • 調(diào)用策略 Gate::authorize 方法將經(jīng)過身份驗證的用戶和資源對象作為參數(shù)傳遞給策略的方法。

PostPolicy.php

sail artisan migrate

修改方法:

  • 參數(shù)
    • $user:當前經(jīng)過身份驗證的用戶的實例。
    • $post:Post 模型的實例。
  • 邏輯
    • 檢查當前認證用戶是否擁有指定帖子的所有權(quán)。

更新其他用戶的帖子

API Token Authentication

  1. 將帖子 ID 設置為帖子更新 API 端點的路徑參數(shù)。
  2. 在授權(quán)標頭中包含不擁有此帖子的用戶的令牌。
  3. 返回 403 錯誤消息,表明您不是帖子的所有者。

注銷時刪除 API 令牌

API Token Authentication

注銷流程

  1. 用戶發(fā)送 API 請求并在授權(quán)標頭中包含 API 令牌
  2. auth:sanctum 中間件將從 API 請求接收到的 API 令牌與存儲在 individual_access_tokens 表中的 API 令牌進行匹配。
  3. 如果 API 令牌成功通過身份驗證,資源服務器將處理 API 請求。
  4. 從personal_access_tokens表中刪除經(jīng)過身份驗證的用戶的API令牌。
  5. 資源服務器返回API響應。

編碼

api.php

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE

應用 auth::sanctum 中間件進行注銷路由并設置 API Token 身份驗證。

AuthController.php

Route::post('/register', [AuthController::class, 'register']);

服務器將從數(shù)據(jù)庫中刪除當前的 API 令牌。這會使令牌無效并且無法再次使用。
服務器向客戶端返回響應,表示注銷成功。

概括

在本文中,使用圖表以易于理解的方式解釋了 API 令牌身份驗證。
通過利用 Laravel Sanctum,可以使用 API 令牌實現(xiàn)簡單且安全的身份驗證,這允許客戶端以不同于基于會話的身份驗證的靈活性向單個用戶授予訪問權(quán)限。使用中間件和策略,還可以有效保護 API 請求、限制訪問以及驗證資源所有權(quán)。

以上是API令牌認證的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
PHP變量范圍解釋了 PHP變量范圍解釋了 Jul 17, 2025 am 04:16 AM

PHP變量作用域常見問題及解決方法包括:1.函數(shù)內(nèi)部無法訪問全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次并在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數(shù)需通過use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助于避免錯誤并提升代碼穩(wěn)定性。

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗證來源與類型、控制文件名與路徑、設置服務器限制并二次處理媒體文件。1.驗證上傳來源通過token防止CSRF并通過finfo_file檢測真實MIME類型使用白名單控制;2.重命名文件為隨機字符串并根據(jù)檢測類型決定擴展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

PHP注釋代碼常用方法有三種:1.單行注釋用//或#屏蔽一行代碼,推薦使用//;2.多行注釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧注釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

發(fā)電機如何在PHP中工作? 發(fā)電機如何在PHP中工作? Jul 11, 2025 am 03:12 AM

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

寫好PHP注釋的關(guān)鍵在于明確目的與規(guī)范,注釋應解釋“為什么”而非“做了什么”,避免冗余或過于簡單。1.使用統(tǒng)一格式,如docblock(/*/)用于類、方法說明,提升可讀性與工具兼容性;2.強調(diào)邏輯背后的原因,如說明為何需手動輸出JS跳轉(zhuǎn);3.在復雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標記待辦事項與問題,便于后續(xù)追蹤與協(xié)作。好的注釋能降低溝通成本,提升代碼維護效率。

如何通過php中的索引訪問字符串中的字符 如何通過php中的索引訪問字符串中的字符 Jul 12, 2025 am 03:15 AM

在PHP中獲取字符串特定索引字符可用方括號或花括號,但推薦方括號;索引從0開始,超出范圍訪問返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結(jié)果;實際應用中循環(huán)訪問前應檢查字符串長度,動態(tài)字符串需驗證有效性,多語言項目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

快速PHP安裝教程 快速PHP安裝教程 Jul 18, 2025 am 04:52 AM

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

學習PHP:初學者指南 學習PHP:初學者指南 Jul 18, 2025 am 04:54 AM

易于效率,啟動啟動tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

See all articles