


Laravel-Entwicklung: Wie implementiert man die API-Authentifizierung mit Laravel Sanctum?
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.
- 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提供的服务和功能。
- 配置数据库
接下来,在执行数据库迁移之前,我们需要设置Sanctum的数据库表。 Larave lSanctum默认提供了一个包含以下字段的personal_access_tokens
数据库表:
id
:令牌的唯一标识符tokenable_type
:与令牌关联的模型的类名tokenable_id
:与令牌关联的模型的IDname
:令牌的名称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
- 创建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']);
这里我们在用户模型中使用了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()
$user->tokens()->delete(); $personalAccessToken->revoke();
- 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🎜
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Methode zum Abholen des Rücksendecode, wenn das Senden von Laravel -E -Mails fehlschlägt. Wenn Sie Laravel zur Entwicklung von Anwendungen verwenden, stellen Sie häufig Situationen auf, in denen Sie Überprüfungscodes senden müssen. Und in Wirklichkeit ...

Laravel -Zeitplan -Aufgabe Ausführen nicht reagierende Fehlerbehebung Bei Verwendung der Zeitplanung von Laravel -Zeitplänen werden viele Entwickler auf dieses Problem stoßen: Zeitplan: Run ...

Die Methode zum Umgang mit Laravels E -Mail -Versagen zum Senden von Verifizierungscode besteht darin, Laravel zu verwenden ...

So implementieren Sie die Tabellenfunktion von benutzerdefiniertem Klicken, um Daten in dcatadmin (laravel-admin) hinzuzufügen, wenn Sie DCAT verwenden ...

Die Auswirkungen des Austauschs von Redis -Verbindungen im Laravel -Framework und der Auswahl von Methoden bei Verwendung von Laravel -Framework und Redis können Entwickler auf ein Problem stoßen: Durch Konfiguration ...

Benutzerdefinierte Mieterdatenbankverbindung in Laravel Multi-Tenant-Erweiterungspaket Stanz/Mietverhältnis beim Erstellen von Multi-Mandanten-Anwendungen mit Laravel Multi-Tenant-Erweiterungspaket Stanz/Mietverhältnis, ...

Laraveleloquent-Modellab Abruf: Das Erhalten von Datenbankdaten Eloquentorm bietet eine prägnante und leicht verständliche Möglichkeit, die Datenbank zu bedienen. In diesem Artikel werden verschiedene eloquente Modellsuchtechniken im Detail eingeführt, um Daten aus der Datenbank effizient zu erhalten. 1. Holen Sie sich alle Aufzeichnungen. Verwenden Sie die Methode All (), um alle Datensätze in der Datenbanktabelle zu erhalten: UseApp \ Models \ post; $ posts = post :: all (); Dies wird eine Sammlung zurückgeben. Sie können mit der Foreach-Schleife oder anderen Sammelmethoden auf Daten zugreifen: foreach ($ postas $ post) {echo $ post->

Verarbeiten Sie 7 Millionen Aufzeichnungen effizient und erstellen Sie interaktive Karten mit Geospatial -Technologie. In diesem Artikel wird untersucht, wie über 7 Millionen Datensätze mithilfe von Laravel und MySQL effizient verarbeitet und in interaktive Kartenvisualisierungen umgewandelt werden können. Erstes Herausforderungsprojektanforderungen: Mit 7 Millionen Datensätzen in der MySQL -Datenbank wertvolle Erkenntnisse extrahieren. Viele Menschen erwägen zunächst Programmiersprachen, aber ignorieren die Datenbank selbst: Kann sie den Anforderungen erfüllen? Ist Datenmigration oder strukturelle Anpassung erforderlich? Kann MySQL einer so großen Datenbelastung standhalten? Voranalyse: Schlüsselfilter und Eigenschaften müssen identifiziert werden. Nach der Analyse wurde festgestellt, dass nur wenige Attribute mit der Lösung zusammenhängen. Wir haben die Machbarkeit des Filters überprüft und einige Einschränkungen festgelegt, um die Suche zu optimieren. Kartensuche basierend auf der Stadt
