Heim >PHP-Framework >Laravel >Laravel-Entwicklung: Wie implementiert man die API-Authentifizierung mit Laravel Passport und Lumen?
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 verwendenWenn 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 Optionprefix
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!