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

Laravel-Entwicklung: Wie implementiert man die API-Authentifizierung mit Laravel Passport und Lumen?

WBOY
WBOYOriginal
2023-06-15 20:35:241099Durchsuche

Mit der rasanten Entwicklung der mobilen Technologie und des Cloud Computing haben viele Unternehmen ihre eigenen API-Dienste entwickelt und diese zu einem Teil ihres Kerngeschäfts gemacht. Während dieses Prozesses ist es sehr wichtig, API-Daten zu schützen und sicherzustellen, dass nur autorisierte Benutzer auf diese API-Daten zugreifen können. Daher wird die API-Authentifizierung zu einem wichtigen Thema. In Laravel und Lumen kann die API-Authentifizierung mit Laravel Passport implementiert werden.

Laravel Passport ist ein API-Authentifizierungssystem, das auf dem OAuth2-Standard basiert. Es bietet eine einfache Möglichkeit zum Erstellen einer API-Authentifizierung und unterstützt mehrere Clients und Autorisierungsmethoden. In diesem Artikel erfahren Sie, wie Sie die API-Authentifizierung mit Laravel Passport und Lumen implementieren.

Installation und Konfiguration von Laravel Passport

Zuerst müssen wir Laravel Passport im Laravel-Projekt installieren. Installieren Sie mit dem folgenden Befehl:

composer require laravel/passport

Nach Abschluss der Installation müssen wir den folgenden Befehl ausführen, um die erforderlichen Migrationen durchzuführen:

php artisan migrate

php artisan passport:install

Der obige passport:install-Befehl erstellt den Client und die Schlüssel dafür Identitätsprüfung. Wir müssen auch die Authentifizierungsroute mithilfe der von Laravel Passport bereitgestellten Methode Passport::routes() beim Startdienstanbieter registrieren: passport:install命令将创建客户端和密钥,以便进行身份验证。我们还需要在启动服务提供者中使用Laravel Passport提供的Passport::routes()方法来注册身份验证路由:

// app/Providers/AuthServiceProvider.php

use LaravelPassportPassport;

// ...

public function boot() 
{
    // ...
    
    Passport::routes();
}

这将注册Laravel Passport提供的路由,以便我们可以使用它来进行身份验证。同时,我们还需要在config/auth.php配置文件中选择passport驱动:

'guards' => [
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

Lumen中使用Laravel Passport

如果我们的项目是使用Lumen框架创建的,那么我们可以使用Laravel Passport的Lumen版本,它提供了与Lumen兼容的方式。我们可以使用以下命令安装Laravel Passport:

composer require dusterio/lumen-passport

安装完成后,我们需要在bootstrap/app.php文件中添加以下两行代码来注册Lumen Passport的服务提供者:

$app->register(DusterioLumenPassportPassportServiceProvider::class);
$app->configure('auth');

在完成注册后,我们需要注册路由和中间件。我们可以在app/Http/routes.php文件中添加以下代码来注册Lumen Passport提供的路由:

$app->group(['middleware' => ['api']], function ($app) {
    DusterioLumenPassportLumenPassport::routes($app, ['prefix' => 'auth']);
});

以上代码中,prefix选项指定了路由前缀,middleware指定了使用的中间件。

接下来,我们需要添加Lumen Passport提供的中间件。在bootstrap/app.php文件中,添加以下代码来注册中间件:

$app->middleware([
    // ...
    DusterioLumenPassportHttpMiddlewareAddCustomHeaders::class,
]);

注册完毕后,我们就完成了Lumen中使用Laravel Passport的配置工作。

使用密码授权方式进行身份验证

一旦我们完成了Laravel Passport的配置,我们就可以使用密码授权方式来进行身份验证。在这种授权方式下,客户端需要使用客户端ID和秘钥来请求访问令牌,然后使用该访问令牌来请求受保护的API资源。

我们可以使用以下代码来请求访问令牌:

$postData = [
    'grant_type' => 'password',
    'client_id' => '{client-id}',
    'client_secret' => '{client-secret}',
    'username' => '{username}',
    'password' => '{password}',
    'scope' => '',
];

$ch = curl_init('http://api.example.com/oauth/token');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

$accessToken = json_decode($response)->access_token;

在以上代码中,我们使用了curl库来向我们的API服务请求访问令牌。请注意,{client-id}{client-secret}需要替换为真实的客户端ID和秘钥,{username}{password}

$response = Http::withHeaders([
    'Authorization' => 'Bearer ' . $accessToken,
])->get('http://api.example.com/api/user');

Dadurch wird die von Laravel Passport bereitgestellte Route registriert, damit wir sie zur Authentifizierung verwenden können. Gleichzeitig müssen wir auch den passport-Treiber in der Konfigurationsdatei config/auth.php auswählen:

rrreee

Laravel Passport in Lumen verwenden

Wenn unser Projekt mit dem Lumen-Framework erstellt wird, Dann können wir die Lumen-Version von Laravel Passport verwenden, die eine Lumen-kompatible Möglichkeit bietet. Wir können Laravel Passport mit dem folgenden Befehl installieren:

rrreee

Nach Abschluss der Installation müssen wir die folgenden zwei Codezeilen in die Datei bootstrap/app.php einfügen, um den Dienstanbieter von Lumen Passport zu registrieren:

rrreee

After Zum Abschluss der Registrierung müssen wir Routen und Middleware registrieren. Wir können der Datei app/Http/routes.php den folgenden Code hinzufügen, um die von Lumen Passport bereitgestellten Routen zu registrieren: 🎜rrreee🎜Im obigen Code gibt die Option prefix das Routenpräfix middleware code> gibt die verwendete Middleware an. 🎜🎜Als nächstes müssen wir die von Lumen Passport bereitgestellte Middleware hinzufügen. Fügen Sie in der Datei „bootstrap/app.php“ den folgenden Code hinzu, um die Middleware zu registrieren: 🎜rrreee🎜Nachdem die Registrierung abgeschlossen ist, haben wir die Konfiguration für die Verwendung von Laravel Passport in Lumen abgeschlossen. 🎜🎜Passwortautorisierung zur Authentifizierung verwenden🎜🎜Sobald wir die Konfiguration von Laravel Passport abgeschlossen haben, können wir die Passwortautorisierung zur Authentifizierung verwenden. Bei dieser Autorisierungsmethode muss der Client die Client-ID und den geheimen Schlüssel verwenden, um ein Zugriffstoken anzufordern, und dann das Zugriffstoken verwenden, um geschützte API-Ressourcen anzufordern. 🎜🎜 Wir können den folgenden Code verwenden, um das Zugriffstoken anzufordern: 🎜rrreee🎜 Im obigen Code haben wir die Curl-Bibliothek verwendet, um das Zugriffstoken von unserem API-Dienst anzufordern. Bitte beachten Sie, dass <code>{client-id} und {client-secret} durch die tatsächliche Client-ID und das tatsächliche Geheimnis {username} ersetzt werden müssen und {password} müssen durch echte Benutzeranmeldeinformationen ersetzt werden. 🎜🎜Sobald wir das Zugriffstoken erhalten haben, können wir damit auf die geschützte API-Ressource zugreifen. Beim Zugriff auf die API müssen wir das Zugriffstoken in den Authorization-Header einfügen. Sie können dies in Laravel mit dem folgenden Code tun: 🎜rrreee🎜 Im obigen Code verwenden wir den HTTP-Client von Laravel, um auf die API zuzugreifen. Wenn der Client eine Anfrage stellt, fügen wir das Zugriffstoken in den Autorisierungsheader ein, damit der API-Dienst das Token validieren und die geschützte Ressource zurückgeben kann. 🎜🎜Fazit🎜🎜Mit Laravel Passport und Lumen können wir unseren API-Diensten starke Authentifizierungsfunktionen hinzufügen. Bei der Implementierung der API-Authentifizierung müssen wir das OAuth2-Autorisierungsprotokoll und seine Autorisierungsmethode verstehen. Bei Verwendung der Passwortautorisierung muss der Client die Client-ID und den geheimen Schlüssel verwenden, um ein Zugriffstoken anzufordern. Sobald wir das Zugriffstoken erhalten haben, können wir damit auf geschützte API-Ressourcen zugreifen. 🎜

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie implementiert man die API-Authentifizierung mit Laravel Passport und Lumen?. 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