Inhaltsverzeichnis
API-Schlüssel mit Laravel Passport generieren
配置OAuth2服务
创建OAuth2路由
定义OAuth2客户端
生成OAuth2访问令牌
使用OAuth2访问令牌进行API调用
Heim PHP-Framework Laravel Laravel-Entwicklung: Wie verwaltet man OAuth2 mit Laravel Passport?

Laravel-Entwicklung: Wie verwaltet man OAuth2 mit Laravel Passport?

Jun 13, 2023 pm 05:14 PM
laravel oauth passport

Bei der Entwicklung von Webanwendungen ist es häufig erforderlich, das OAuth2-Protokoll zur Benutzerauthentifizierung und -autorisierung zu verwenden, damit Benutzer Dienste von Drittanbietern sicher nutzen können. Durch die Verwendung von Laravel Passport können Sie das OAuth2-Protokoll problemlos handhaben, um Authentifizierung und Autorisierung in Laravel-Anwendungen zu implementieren.

Laravel Passport ist ein Open-Source-Softwarepaket, das eine vollständige OAuth2-Serverimplementierung bereitstellt, einschließlich Token-Generierung, Token-Verwaltung, Umfang und anderen Funktionen, wodurch die Implementierung des OAuth2-Protokolls in Laravel-Anwendungen sehr einfach ist.

In diesem Artikel erfahren Sie, wie Sie Laravel Passport zum Verwalten des OAuth2-Protokolls verwenden.

API-Schlüssel mit Laravel Passport generieren

Bevor wir das OAuth2-Protokoll verwenden, müssen wir einen API-Schlüssel generieren. Der API-Schlüssel wird als OAuth2-Client-ID und -Geheimnis verwendet und zum Abrufen des Zugriffstokens verwendet. Wir können API-Schlüssel mit dem von Laravel Passport bereitgestellten artisan-Befehl generieren.

Installieren Sie zunächst Laravel Passport mit Composer:

composer require laravel/passport
Nach dem Login kopieren

Führen Sie dann den Migrationsbefehl aus:

php artisan migrate
Nach dem Login kopieren

Als nächstes generieren Sie den API-Schlüssel mit dem Passport-Befehl client:secret: client:secret命令生成API密钥:

php artisan passport:client --password
Nach dem Login kopieren

这将生成一个客户端ID和一个客户端密钥。

配置OAuth2服务

在生成API密钥之后,我们需要配置OAuth2服务。Laravel Passport提供了一些配置选项,可以通过修改Laravel应用程序的config/auth.php文件来配置这些选项。

auth.php文件中,我们需要设置api驱动程序为Passport驱动程序,这样Laravel就会使用Passport来处理用户身份验证和授权。

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
        'hash' => false,
    ],
],
Nach dem Login kopieren

创建OAuth2路由

接下来,我们需要在应用程序中创建一些OAuth2路由,这些路由将用于处理OAuth2请求。我们可以使用Laravel Passport提供的自动生成路由的artisan命令来创建这些路由。

php artisan passport:routes
Nach dem Login kopieren

这将自动生成以下路由:

+-----------+------------------------+-------------------------------------------------+---------------------------------+------------------------------------------------------------------+------------------------+
| Method    | URI                    | Name                                            | Action                          | Middleware                                                       | In                                                                                                             |
+-----------+------------------------+-------------------------------------------------+---------------------------------+------------------------------------------------------------------+------------------------+
| GET|HEAD  | oauth/authorize        | passport.authorizations.authorize              | LaravelPassportHttpControllersAuthorizationController@show   | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:view-authorizations                                |
| POST      | oauth/authorize        | passport.authorizations.approve                | LaravelPassportHttpControllersApproveAuthorizationController | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:approve-authorizations                             |
| DELETE    | oauth/authorize        | passport.authorizations.deny                   | LaravelPassportHttpControllersDenyAuthorizationController    | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:deny-authorizations                               |
| POST      | oauth/clients          | passport.clients.store                          | LaravelPassportHttpControllersClientController@store          | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:create-clients                                      |
| GET|HEAD  | oauth/clients          | passport.clients.index                          | LaravelPassportHttpControllersClientController@forUser        | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:view-clients                                        |
| PUT       | oauth/clients/{client} | passport.clients.update                        | LaravelPassportHttpControllersClientController@update         | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:update-clients                                      |
| DELETE    | oauth/clients/{client} | passport.clients.destroy                       | LaravelPassportHttpControllersClientController@destroy        | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:delete-clients                                      |
| POST      | oauth/token           | passport.token                                  | LaravelPassportHttpControllersAccessTokenController@issueToken| throttle                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:issue-tokens                                        |
| POST      | oauth/token/refresh   | passport.token.refresh                          | LaravelPassportHttpControllersTransientTokenController@refresh | throttle                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:refresh-tokens                                      |
| DELETE    | oauth/tokens/{token}  | passport.tokens.destroy                         | LaravelPassportHttpControllersAuthorizedAccessTokenController@destroy | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,throttle:60,1,oauth                                                                  |
| GET|HEAD  | oauth/tokens          | passport.tokens.index                           | LaravelPassportHttpControllersAuthorizedAccessTokenController@forUser  | web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:view-tokens                                        |
| DELETE    | oauth/tokens          | passport.tokens.destroy.all                     | LaravelPassportHttpControllersAuthorizedAccessTokenController@destroyAll| web,auth                                                         | LaravelPassportHttpMiddlewareCheckClientCredentials,can:delete-tokens                                      |
+-----------+------------------------+-------------------------------------------------+---------------------------------+------------------------------------------------------------------+------------------------+
Nach dem Login kopieren

这些路由都是Passport内置的路由,并使用passport.前缀名称。

定义OAuth2客户端

现在我们已经准备好了,可以开始定义OAuth2客户端了。我们可以使用先前生成的API密钥来创建OAuth2客户端。

在数据库中创建一个新的OAuth2客户端。我们可以手动创建它,或使用Laravel Passport提供的artisan命令passport:client来创建它。

在创建过程中,我们需要指定客户端的名称、密钥、回调URL等。

手动创建:

INSERT INTO `oauth_clients` (`id`, `user_id`, `name`, `secret`, `redirect`, `revoked`, `personal_access_client`, `password_client`, `updated_at`, `created_at`) 
VALUES (1, NULL, 'My Client', 'my-client-secret', 'http://localhost/callback', 0, 0, 1, '2021-10-01 00:00:00', '2021-10-01 00:00:00');
Nach dem Login kopieren

用artisan创建:

php artisan passport:client --client --name="My Client"
Nach dem Login kopieren

运行此命令后,它将自动生成OAuth2客户端,并显示客户端ID和密钥。

生成OAuth2访问令牌

现在我们已经准备好了OAuth2客户端,并定义了OAuth2路由,我们可以开始使用OAuth2协议来生成访问令牌。

我们可以使用passport:client命令生成访问令牌:

php artisan passport:client --client --password
Nach dem Login kopieren

运行此命令后,它将生成一个OAuth2客户端并自动为该客户端生成一个访问令牌。

使用OAuth2访问令牌进行API调用

最后一步是使用OAuth2访问令牌进行API调用。我们可以使用Laravel自带的Guzzle来发送HTTP请求,并将访问令牌作为Authorization Header发送。

use GuzzleHttpClient;

$client = new Client();

$response = $client->request('GET', 'http://localhost/api/user', [
    'headers' => [
        'Authorization' => 'Bearer '.$accessToken,
    ],
]);

$body = $response->getBody()->getContents();
Nach dem Login kopieren

需要注意的是,对于每个请求,我们都需要发送有效的访问令牌。这可以通过使用Passport::actingAs

use LaravelPassportPassport;

Passport::actingAs($user);

$response = $client->request('GET', 'http://localhost/api/user', [
    'headers' => [
        'Authorization' => 'Bearer '.$accessToken,
    ],
]);
Nach dem Login kopieren
Dadurch wird A. generiert Client-ID und ein Client-Geheimnis.

OAuth2-Dienst konfigurieren

Nachdem wir den API-Schlüssel generiert haben, müssen wir den OAuth2-Dienst konfigurieren. Laravel Passport bietet einige Konfigurationsoptionen, die durch Ändern der Datei config/auth.php der Laravel-Anwendung konfiguriert werden können. 🎜🎜In der Datei auth.php müssen wir den api-Treiber auf den Passport-Treiber einstellen, damit Laravel Passport für die Benutzerauthentifizierung und -autorisierung verwendet. 🎜rrreee🎜OAuth2-Routen erstellen🎜🎜Als nächstes müssen wir einige OAuth2-Routen in der Anwendung erstellen, die zur Bearbeitung von OAuth2-Anfragen verwendet werden. Wir können diese Routen mit dem Befehl artisan erstellen, der automatisch Routen generiert, die von Laravel Passport bereitgestellt werden. 🎜rrreee🎜Dadurch werden automatisch die folgenden Routen generiert: 🎜rrreee🎜Diese Routen sind in Passport integrierte Routen und verwenden den Präfixnamen passport.. 🎜🎜Definieren Sie den OAuth2-Client🎜🎜Jetzt können wir mit der Definition des OAuth2-Clients beginnen. Wir können den zuvor generierten API-Schlüssel verwenden, um einen OAuth2-Client zu erstellen. 🎜🎜Erstellen Sie einen neuen OAuth2-Client in der Datenbank. Wir können es manuell erstellen oder den von Laravel Passport bereitgestellten Handwerkerbefehl passport:client verwenden, um es zu erstellen. 🎜🎜Während des Erstellungsprozesses müssen wir den Namen, den Schlüssel, die Rückruf-URL usw. des Kunden angeben. 🎜🎜Manuell erstellen: 🎜rrreee🎜Mit Handwerker erstellen: 🎜rrreee🎜Nach der Ausführung dieses Befehls wird automatisch der OAuth2-Client generiert und die Client-ID und das Geheimnis angezeigt. 🎜🎜OAuth2-Zugriffstoken generieren🎜🎜Da wir nun den OAuth2-Client bereit und die OAuth2-Routen definiert haben, können wir mit der Verwendung des OAuth2-Protokolls zum Generieren von Zugriffstoken beginnen. 🎜🎜Wir können ein Zugriffstoken mit dem Befehl passport:client generieren: 🎜rrreee🎜Nachdem dieser Befehl ausgeführt wurde, wird ein OAuth2-Client generiert und automatisch ein Zugriffstoken für den Client generiert. 🎜🎜Verwenden Sie das OAuth2-Zugriffstoken, um einen API-Aufruf durchzuführen.🎜🎜Der letzte Schritt besteht darin, das OAuth2-Zugriffstoken zu verwenden, um einen API-Aufruf durchzuführen. Wir können Laravels eigenen Guzzle verwenden, um HTTP-Anfragen zu senden und das Zugriffstoken als Autorisierungsheader zu senden. 🎜rrreee🎜Zu beachten ist, dass wir für jede Anfrage ein gültiges Zugriffstoken senden müssen. Dies kann durch die Verwendung der Methode Passport::actingAs erreicht werden, die die angegebene Benutzer-ID durch ein gültiges Autorisierungstoken ersetzt. 🎜rrreee🎜Fazit🎜🎜In diesem Artikel haben wir vorgestellt, wie man Laravel Passport zur Verwaltung des OAuth2-Protokolls verwendet. Mit Laravel Passport ist es einfach, API-Schlüssel zu generieren, OAuth2-Dienste zu konfigurieren, OAuth2-Routen zu erstellen, OAuth2-Clients zu definieren, OAuth2-Zugriffstoken zu generieren und diese für API-Aufrufe zu verwenden. Laravel Passport ist eine sehr gute Wahl für die Entwicklung von Webanwendungen mit dem OAuth2-Protokoll. 🎜

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

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie verwende ich objektrelationales Mapping (ORM) in PHP, um Datenbankoperationen zu vereinfachen? Wie verwende ich objektrelationales Mapping (ORM) in PHP, um Datenbankoperationen zu vereinfachen? May 07, 2024 am 08:39 AM

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.

Analyse der Vor- und Nachteile von PHP-Unit-Test-Tools Analyse der Vor- und Nachteile von PHP-Unit-Test-Tools May 06, 2024 pm 10:51 PM

Analyse des PHP-Unit-Test-Tools: PHPUnit: Geeignet für große Projekte, bietet umfassende Funktionalität und ist einfach zu installieren, kann jedoch ausführlich und langsam sein. PHPUnitWrapper: geeignet für kleine Projekte, einfach zu verwenden, optimiert für Lumen/Laravel, verfügt jedoch über eingeschränkte Funktionalität, bietet keine Code-Coverage-Analyse und hat begrenzte Community-Unterstützung.

Vergleich der neuesten Versionen von Laravel und CodeIgniter Vergleich der neuesten Versionen von Laravel und CodeIgniter Jun 05, 2024 pm 05:29 PM

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 – Handwerkerbefehle Laravel – Handwerkerbefehle Aug 27, 2024 am 10:51 AM

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?

Wie vergleichen sich die Datenverarbeitungsfunktionen in Laravel und CodeIgniter? Wie vergleichen sich die Datenverarbeitungsfunktionen in Laravel und CodeIgniter? Jun 01, 2024 pm 01:34 PM

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

Laravel vs CodeIgniter: Welches Framework ist besser für große Projekte? Laravel vs CodeIgniter: Welches Framework ist besser für große Projekte? Jun 04, 2024 am 09:09 AM

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.

Was ist einsteigerfreundlicher: Laravel oder CodeIgniter? Was ist einsteigerfreundlicher: Laravel oder CodeIgniter? Jun 05, 2024 pm 07:50 PM

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.

PHP-Code-Unit-Tests und Integrationstests PHP-Code-Unit-Tests und Integrationstests May 07, 2024 am 08:00 AM

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.

See all articles