首頁 >php框架 >Laravel >Laravel開發:如何使用Laravel Sanctum實現API身分驗證?

Laravel開發:如何使用Laravel Sanctum實現API身分驗證?

PHPz
PHPz原創
2023-06-14 08:21:472178瀏覽

隨著RESTful API的普及和應用的廣泛使用,越來越多的應用程式需要對API進行身份驗證和授權,因此API安全性已成為當今軟體開發中極其重要的一個面向。 Laravel Sanctum是Laravel 7.0引入的開箱即用的輕量級身份驗證系統,它旨在讓API身份驗證變得簡單且安全。在本篇文章中,我們將介紹如何在Laravel中使用Sanctum來確保API的安全性。

  1. 安裝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提供的服務和功能。

  1. 設定資料庫

接下來,在執行資料庫遷移之前,我們需要設定Sanctum的資料庫表。 Larave lSanctum預設提供了一個包含以下欄位的personal_access_tokens資料庫表:

  • id:令牌的唯一識別碼
  • ##tokenable_type:與令牌關聯的模型的類別名稱
  • tokenable_id:與令牌關聯的模型的ID
name

:令牌的名稱token:API令牌的值

#abilities:令牌的授權#在建立personal_access_tokens

表格之前,我們需要先建立模型關係。可以透過在

AuthServiceProvider中註冊以下內容來完成:

use LaravelSanctumSanctum;
//...

public function boot()
{
    $this->registerPolicies(); 

    Sanctum::ignoreMigrations();

    Sanctum::actingAs( null, [
        'superuser'
    ]);
}

    Sanctum::ignoreMigrations()
  1. 用於阻止Laravel在
  2. artisan migrate
命令中執行Sanctum的資料庫遷移檔。但是,在大多數情況下,我們只是將其添加到資料庫遷移檔案的命令中。

Sanctum::actingAs()還提供了一種僅用於開發的方法,該方法在沒有使用者驗證的情況下模擬使用者身分。 然後,我們需要執行以下命令來建立personal_access_tokens表:

php artisan migrate

建立API令牌Laravel Sanctum為我們提供了兩種方式來為API產生令牌。一種是CreateToken

方法,該方法可以建立一個或多個包含可選名稱和授予權限的API令牌。這裡我們介紹第二種方法,即使用
    hasApiTokens()
  1. 函數來配合
  2. 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']);
這裡我們在使用者模型中使用了 HasApiTokens

Trait,以便在使用者模型中實作API令牌功能。我們使用

createToken方法來建立一個API令牌,並在建立令牌時指定了一個可選的名稱和授權的權限鍵。

    保護API路由
有了API金鑰,我們就可以將其註入到每個請求中以進行身份驗證。我們可以在Laravel的路由檔案中使用

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();
###結束語######現在我們已經成功地實現了Sanctum身份驗證來保護我們的API。 Sanctum和Laravel提供了簡單而強大的API身份驗證,這使得開發人員可以專注於建立強大的API,並將主要的關注點放在業務邏輯上。在使用Sanctum時,強烈建議您仔細閱讀官方文檔,以便您可以全面了解API的身份驗證過程,並確保應用程式具有最高的安全性。 ###

以上是Laravel開發:如何使用Laravel Sanctum實現API身分驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn