


Laravel-Entwicklung: Wie implementiert man die API-OAuth2-Authentifizierung mit Laravel Passport?
Da die Verwendung von APIs immer beliebter wird, wird der Schutz der Sicherheit und Skalierbarkeit von APIs immer wichtiger. OAuth2 hat sich zu einem weit verbreiteten API-Sicherheitsprotokoll entwickelt, das Anwendungen den Zugriff auf geschützte Ressourcen durch Autorisierung ermöglicht. Zur Implementierung der OAuth2-Authentifizierung bietet Laravel Passport eine einfache und flexible Möglichkeit. In diesem Artikel erfahren Sie, wie Sie die API-OAuth2-Authentifizierung mit Laravel Passport implementieren.
Laravel Passport ist eine offiziell bereitgestellte OAuth2-Serverbibliothek, mit der Sie Ihrer Laravel-Anwendung problemlos eine OAuth2-Authentifizierung hinzufügen können. Es bietet API-Authentifizierung für Clients des Laravel-Frameworks, schützt APIs und schränkt den Ressourcenzugriff durch Token ein. Mit wenigen Konfigurationsschritten können Sie einen sicheren OAuth2-Server erstellen und Authentifizierung und Autorisierung für Ihre API bereitstellen.
Um Laravel Passport nutzen zu können, müssen Sie es installieren. Sie können es über den Composer-Paketmanager installieren:
composer require laravel/passport
Sobald Sie Laravel Passport installiert haben, müssen Sie Migrationen ausführen, um die erforderlichen Datenbanktabellen zu erstellen:
php artisan migrate
Um Laravel Passport zu aktivieren, müssen Sie den ServiceProvider und die Middleware registrieren . Fügen Sie den folgenden ServiceProvider und die folgende Middleware in der Datei config/app.php hinzu:
'providers' => [ // ... LaravelPassportPassportServiceProvider::class, ], 'middleware' => [ // ... LaravelPassportHttpMiddlewareCreateFreshApiToken::class, ],
Laravel Passport erfordert eine „Schlüssel“-Tabelle für die Ausgabe von Zugriffstokens und Aktualisierungstokens. Durch Ausführen des folgenden Befehls wird diese Tabelle generiert:
php artisan passport:install
Dadurch werden ein verschlüsseltes RSA-Schlüsselpaar zum Signieren und Überprüfen von Token sowie ein Client namens „personal_access_client“ und ein Client namens „password_client“ erstellt. Diese beiden Clients werden verwendet, um verschiedene Arten von Token zu erstellen. Der erste Client wird zum Generieren persönlicher Zugriffstoken verwendet, die dem Client den Zugriff auf jeden mit OAuth2-Authentifizierung gesicherten API-Endpunkt ermöglichen. Der zweite Client wird zum Erstellen von Passwort-Autorisierungstokens verwendet, die es dem Client ermöglichen, über Benutzernamen und Passwort ein Zugriffstoken zu erhalten.
In diesem Prozess müssen Sie auch Laravel Passport in Ihrer config/auth.php-Datei konfigurieren. Sie müssen den Passport-Treiber zum API-Guard hinzufügen, damit Laravel Passport alles im Zusammenhang mit OAuth2 verarbeiten kann. Ein Beispiel ist wie folgt:
'guards' => [ // ... 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
Da wir nun die Einrichtung abgeschlossen haben, können wir mit der Erstellung von API-Routen und Controllern beginnen.
Zuerst müssen Sie Ihre API-Routen definieren. Nehmen wir zum Beispiel an, Sie haben einen API-Endpunkt, um eine Liste von Aufgaben abzurufen:
Route::get('/tasks', 'TaskController@index')->middleware('auth:api');
Als Nächstes müssen Sie einen Controller erstellen, der die Anfrage verarbeitet und auf die Aufgaben reagiert:
class TaskController extends Controller { public function index() { $tasks = Task::all(); return response()->json([ 'tasks' => $tasks, ]); } }
Fügen Sie den Parameter „auth:api“ ein Die Middleware-Methode weist uns an, API-Schutzvorrichtungen zu verwenden, um Routen zu schützen.
Jetzt sehen wir uns an, wie man die OAuth2-Authentifizierung durchführt und ein Zugriffstoken erhält. Sie müssen einen Client erstellen, der den OAuth2-Fluss mithilfe des Kennworts autorisiert, um das Zugriffstoken zu erhalten. Auf diese Weise können Sie sich mit API-Anfragen am API-Endpunkt authentifizieren.
Sie können einen neuen Client in der Clientliste von Laravel Passport erstellen oder die Methode Passport::client() in Ihrem Code verwenden, um eine zufällige Client-ID und ein Client-Geheimnis für den Client zu generieren. Sie können die Client-ID und das Client-Geheimnis in Ihrer .env-Datei speichern oder sie direkt in Ihrer Passport::client()-Methode bereitstellen. Diese Methode erstellt einen neuen Client und gibt die Client-ID und das Client-Geheimnis zurück:
use LaravelPassportClient; use IlluminateSupportFacadesDB; $client = $this->createClient(); public function createClient() { $client = Client::forceCreate([ 'user_id' => null, 'name' => 'Test Client', 'secret' => str_random(40), 'redirect' => '', 'personal_access_client' => false, 'password_client' => true, 'revoked' => false, ]); DB::table('oauth_client_grants')->insert([ 'client_id' => $client->id, 'grant_id' => 1, ]); return $client; }
Nachdem wir nun einen Client haben, müssen wir Laravel Passport im Controller verwenden, um das Zugriffstoken abzurufen und es für den Zugriff auf den geschützten API-Endpunkt zu verwenden. Wir müssen die OAuth2-Authentifizierung im Controller mithilfe des folgenden Codes implementieren:
use IlluminateSupportFacadesAuth; use LaravelPassportClientRepository; class TaskController extends Controller { protected $clients; public function __construct(ClientRepository $clients) { $this->clients = $clients; } public function index() { $client = $this->clients->find(2); $response = $this->actingAsClient($client, function () { return $this->get('/api/tasks'); }); return $response->getContent(); } protected function actingAsClient($client, $callback, $scopes = []) { $proxy = new LaravelPassportHttpControllersAccessTokenController(); $token = $proxy->issueToken( $this->getPersonalAccessTokenRequest($client, $scopes) ); Auth::guard('web')->loginUsingId($client->user_id); $callback($token); return $this->app->make(IlluminateHttpRequest::class); } protected function getPersonalAccessTokenRequest($client, $scopes = []) { $data = [ 'grant_type' => 'client_credentials', 'client_id' => $client->id, 'client_secret' => $client->secret, 'scope' => implode(' ', $scopes), ]; return IlluminateHttpRequest::create('/oauth/token', 'POST', $data); } }
Mithilfe der Methode „actingAsClient()“ können wir die Ausführung der Anforderung als Client simulieren, und jede Methode im Controller kann diese Methode für die OAuth2-Authentifizierung verwenden. Wir müssen ein Clientobjekt, eine Rückruffunktion zum Ausführen der API-Anfrage und optional die Berechtigungen zum Hinzufügen zur Anfrage übergeben.
Nachdem wir nun die OAuth2-Authentifizierungskonfiguration von Laravel Passport abgeschlossen haben, können wir mithilfe des obigen Codemusters problemlos eine sichere OAuth2-Authentifizierung auf unseren API-Endpunkten implementieren. Passport ist ein relativ neues Projekt. Es ist jedoch perfekt in Laravel integriert und bietet mehrere OAuth2-Authentifizierungsdienste, sodass Sie Ihrer API problemlos Authentifizierung und Autorisierung hinzufügen können. Wenn Sie eine Laravel-Anwendung ausführen und die OAuth2-Authentifizierung hinzufügen müssen, ist Laravel Passport ideal für diesen Zweck.
Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie implementiert man die API-OAuth2-Authentifizierung mit Laravel Passport?. 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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



Datenbankoperationen in PHP werden durch ORM vereinfacht, das Objekte in relationalen Datenbanken abbildet. EloquentORM in Laravel ermöglicht Ihnen die Interaktion mit der Datenbank mithilfe einer objektorientierten Syntax. Sie können ORM verwenden, indem Sie Modellklassen definieren, Eloquent-Methoden verwenden oder in der Praxis ein Blog-System erstellen.

Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

Für Anfänger bietet CodeIgniter eine sanftere Lernkurve und weniger Funktionen, deckt aber die Grundbedürfnisse ab. Laravel bietet einen größeren Funktionsumfang, weist jedoch eine etwas steilere Lernkurve auf. In Bezug auf die Leistung schneiden sowohl Laravel als auch CodeIgniter gut ab. Laravel verfügt über eine umfangreichere Dokumentation und aktive Community-Unterstützung, während CodeIgniter einfacher und leichtgewichtiger ist und über starke Sicherheitsfunktionen verfügt. Im praktischen Fall der Erstellung einer Blogging-Anwendung vereinfacht EloquentORM von Laravel die Datenmanipulation, während CodeIgniter mehr manuelle Konfiguration erfordert.

Bei der Auswahl eines Frameworks für große Projekte haben Laravel und CodeIgniter jeweils ihre eigenen Vorteile. Laravel ist für Anwendungen auf Unternehmensebene konzipiert und bietet modularen Aufbau, Abhängigkeitsinjektion und einen leistungsstarken Funktionsumfang. CodeIgniter ist ein leichtes Framework, das sich eher für kleine bis mittelgroße Projekte eignet und Wert auf Geschwindigkeit und Benutzerfreundlichkeit legt. Für große Projekte mit komplexen Anforderungen und einer großen Anzahl von Benutzern sind die Leistung und Skalierbarkeit von Laravel besser geeignet. Für einfache Projekte oder Situationen mit begrenzten Ressourcen sind die leichten und schnellen Entwicklungsfunktionen von CodeIgniter idealer.

Leitfaden zum Testen von PHP-Einheiten und -Integrationen Unit-Tests: Konzentrieren Sie sich auf eine einzelne Code- oder Funktionseinheit und verwenden Sie PHPUnit, um Testfallklassen zur Überprüfung zu erstellen. Integrationstests: Achten Sie darauf, wie mehrere Codeeinheiten zusammenarbeiten, und verwenden Sie die Methoden setUp() und TearDown() von PHPUnit, um die Testumgebung einzurichten und zu bereinigen. Praktischer Fall: Verwenden Sie PHPUnit, um Unit- und Integrationstests in Laravel-Anwendungen durchzuführen, einschließlich der Erstellung von Datenbanken, dem Starten von Servern und dem Schreiben von Testcode.

Für kleine Projekte eignet sich Laravel, für größere Projekte, die starke Funktionalität und Sicherheit erfordern. CodeIgniter eignet sich für sehr kleine Projekte, die geringes Gewicht und Benutzerfreundlichkeit erfordern.
