Heim  >  Artikel  >  PHP-Framework  >  Laravel-Entwicklung: Wie implementiert man die API-Authentifizierung mit Laravel Sanctum?

Laravel-Entwicklung: Wie implementiert man die API-Authentifizierung mit Laravel Sanctum?

PHPz
PHPzOriginal
2023-06-14 08:21:472112Durchsuche

Mit der Beliebtheit von RESTful APIs und der weiten Verbreitung von Anwendungen erfordern immer mehr Anwendungen eine Authentifizierung und Autorisierung von APIs, sodass API-Sicherheit zu einem äußerst wichtigen Aspekt in der heutigen Softwareentwicklung geworden ist. Laravel Sanctum ist ein leichtgewichtiges Authentifizierungssystem, das mit Laravel 7.0 standardmäßig eingeführt wurde und darauf ausgelegt ist, die API-Authentifizierung einfach und sicher zu machen. In diesem Artikel stellen wir vor, wie man Sanctum in Laravel verwendet, um die API-Sicherheit zu gewährleisten.

  1. Installieren Sie Laravel Sanctum

Bevor wir beginnen, müssen wir bestätigen, dass Laravel 7.0+ Version installiert wurde. Dann können wir Composer verwenden, um Laravel Sanctum-Abhängigkeiten zu installieren:

composer require laravel/sanctum

Nach der Installation von Sanctum fügen Sie den folgenden Code zur Datei config/app.php hinzu: 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()用于阻止Laravel在artisan migrate命令中执行Sanctum的数据库迁移文件。但是,在大多数情况下,我们只是将其添加到数据库迁移文件的命令中。Sanctum::actingAs()还提供了一种仅用于开发的方法,该方法在没有用户身份验证的情况下模拟用户身份。

然后,我们需要运行以下命令来创建personal_access_tokens表:

php artisan migrate
  1. 创建API令牌

Laravel Sanctum为我们提供了两种方式来为API生成令牌。一种是CreateToken方法,该方法可以创建一个或多个包含可选名称和授予权限的API令牌。这里我们介绍第二种方法,即使用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令牌,并在创建令牌时指定了一个可选的名称和授权的权限键。

  1. 保护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才能访问。

  1. 使用Bearer令牌

使用Bearer令牌是通过HTTP Authorization头来发送API令牌的最常见方法。可以通过在请求头中加入Authorization: Bearer {{$personalAccessToken->plainTextToken}}来授权令牌:

curl -H "Authorization: Bearer xxxxx" http://example.com/api/user
  1. 撤销API令牌

最后,我们需要了解如何撤销API令牌。我们可以使用tokens()->delete()函数来删除某个用户的所有API令牌,或使用revoke()

$user->tokens()->delete();

$personalAccessToken->revoke();

Auf diese Weise hat die Laravel-Anwendung dies bereits getan genutzte Sanctum-Dienste und bereitgestellte Funktionen.

    Konfigurieren der Datenbank

    🎜Als nächstes müssen wir vor der Datenbankmigration die Datenbanktabellen von Sanctum einrichten. Larav lSanctum stellt standardmäßig eine personal_access_tokens-Datenbanktabelle bereit, die die folgenden Felder enthält: 🎜
    🎜id: die eindeutige Kennung des Tokens 🎜🎜tokenable_type code >: Der Klassenname des Modells, das dem Token zugeordnet ist 🎜🎜<code>tokenable_id: Die ID des Modells, das dem Token zugeordnet ist 🎜🎜name: Der Name des Tokens 🎜 🎜token: Der Wert des API-Tokens 🎜🎜abilities: Die Autorisierung des Tokens🎜
🎜Vor dem Erstellen der Tabelle personal_access_tokens , müssen wir die erste Modellbeziehung erstellen. Dies kann durch die Registrierung des Folgenden in AuthServiceProvider erfolgen: 🎜rrreee🎜Sanctum::ignoreMigrations() wird verwendet, um Laravel in der artisan migrate zu verhindern Befehl: Führen Sie die Datenbankmigrationsdatei von Sanctum aus. In den meisten Fällen fügen wir es jedoch einfach dem Befehl der Datenbankmigrationsdatei hinzu. Sanctum::actingAs() bietet außerdem eine reine Entwicklungsmethode, die ohne Benutzerauthentifizierung die Identität eines Benutzers annimmt. 🎜🎜Dann müssen wir den folgenden Befehl ausführen, um die Tabelle personal_access_tokens zu erstellen: 🎜rrreee
    🎜API-Token erstellen 🎜🎜🎜Laravel Sanctum bietet uns zwei Möglichkeiten zur API generiert Token. Eine davon ist die Methode CreateToken, die ein oder mehrere API-Tokens mit optionalen Namen und gewährten Berechtigungen erstellt. Hier stellen wir die zweite Methode vor, die darin besteht, die Funktion hasApiTokens() in Verbindung mit der Funktion createToken() zu verwenden: 🎜rrreee🎜Hier verwenden wir HasApiTokensTrait, um die API-Token-Funktionalität im Benutzermodell zu implementieren. Wir verwenden die Methode <code>createToken, um ein API-Token zu erstellen und geben beim Erstellen des Tokens einen optionalen Namen und einen autorisierten Berechtigungsschlüssel an. 🎜
      🎜API-Routen sichern🎜🎜🎜Mit dem API-Schlüssel können wir ihn in jede Authentifizierungsanfrage einfügen. Wir können die sanctum-Middleware in der Routing-Datei von Laravel verwenden, um die API-Route zu sichern, um das Token in der Anfrage zu überprüfen: 🎜rrreee🎜 In diesem Code definieren wir eine Validierungs--Routinggruppe für sanctum Middleware. Eine Routengruppe enthält eine Route, für deren Zugriff lediglich ein gültiges Token erforderlich ist. 🎜
        🎜Verwendung von Bearer-Tokens 🎜🎜🎜Die Verwendung von Bearer-Tokens ist die gebräuchlichste Methode zum Senden von API-Tokens über den HTTP-Header Authorization. Sie können das Token autorisieren, indem Sie Authorization: Bearer {{$personalAccessToken->plainTextToken}} zum Anforderungsheader hinzufügen: 🎜rrreee
          🎜Revoke API token🎜🎜🎜 Schließlich , müssen wir verstehen, wie man API-Tokens widerruft. Wir können die Funktion tokens()->delete() verwenden, um alle API-Tokens für einen Benutzer zu löschen, oder die Funktion revoke() verwenden, um ein einzelnes API-Token zu widerrufen :🎜rrreee🎜Fazit🎜🎜Jetzt haben wir die Sanctum-Authentifizierung erfolgreich implementiert, um unsere API zu schützen. Sanctum und Laravel bieten eine einfache, aber leistungsstarke API-Authentifizierung, die es Entwicklern ermöglicht, sich auf die Entwicklung leistungsstarker APIs zu konzentrieren und den Schwerpunkt auf die Geschäftslogik zu legen. Wenn Sie Sanctum verwenden, wird dringend empfohlen, die offizielle Dokumentation sorgfältig zu lesen, damit Sie den Authentifizierungsprozess der API vollständig verstehen und die höchste Sicherheit für Ihre Anwendung gewährleisten können. 🎜

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie implementiert man die API-Authentifizierung mit Laravel Sanctum?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn