Laravel ist ein sehr beliebtes PHP-Framework. Es ist einfach zu verwenden, hoch skalierbar und bietet eine hohe Codelesbarkeit. Laravel bietet außerdem viele Zusatzpakete (Pakete) zur Implementierung verschiedener Funktionen, darunter Laravel Passport, ein API-Paket zur Implementierung der OAuth2-Authentifizierung.
OAuth2 ist ein beliebtes Autorisierungsframework, das den Autorisierungsprozess vereinfacht und häufig in Web- und Mobilanwendungen verwendet wird. Um OAuth2 verwenden zu können, müssen wir einen Autorisierungsserver implementieren, um Token zu generieren und Clients die Nutzung der API zu ermöglichen. Laravel Passport bietet uns eine einfache Möglichkeit, die OAuth2-Authentifizierung zu implementieren.
In diesem Artikel wird erläutert, wie Sie Laravel Passport zur Implementierung der OAuth2-Authentifizierung verwenden. Vor dem Start wird davon ausgegangen, dass das Laravel-Framework bereits installiert ist.
Sie können Composer verwenden, um Laravel Passport zu installieren. Führen Sie den folgenden Befehl im Stammverzeichnis Ihrer Laravel-Anwendung aus:
composer require laravel/passport
Sobald die Installation abgeschlossen ist, müssen Sie den folgenden Befehl ausführen, um die erforderlichen Tabellen für Laravel Passport zu erstellen:
php artisan migrate
Führen Sie anschließend den folgenden Befehl aus, um Verschlüsselungsschlüssel zu generieren für Laravel Passport:
php artisan passport:install
Der generierte Schlüssel wird zum Verschlüsseln des generierten Tokens verwendet.
Nach Abschluss der Installation müssen Sie Laravel Passport in Ihrer Anwendung konfigurieren. Die folgenden Schritte sind erforderlich:
Um Laravel Passport zu aktivieren, müssen Sie zunächst Passport::routes aufrufen ()-Methode. Diese Methode registriert die erforderlichen Routen:
//在bootstrap/app.php文件中加入下面这行代码 LaravelPassportPassport::routes();
Standardmäßig läuft das Token automatisch ab, nachdem es abgelaufen ist. Wenn Sie Token nach ihrem Ablauf automatisch aktualisieren möchten, können Sie die Methode Passport::refreshTokensExpireIn() in AuthServiceProvider verwenden. Wir fügen dem AuthServiceProvider das folgende Code-Snippet hinzu:
//在AppProvidersAuthServiceProvider.php文件中加入下面这段代码 use LaravelPassportPassport; //其他代码... public function boot() { $this->registerPolicies(); Passport::routes(); Passport::tokensExpireIn(Carbon::now()->addDays(15)); Passport::refreshTokensExpireIn(Carbon::now()->addDays(30)); }
In diesem Beispiel setzt die Methode tokensExpireIn()
die Token-Ablaufzeit auf 15 Tage und die Methode refreshTokensExpireIn()
Die Methode legt die Ablaufzeit des automatisch aktualisierten Tokens auf 30 Tage fest. tokensExpireIn()
方法将令牌的过期时间设置为15天,而refreshTokensExpireIn()
方法将自动刷新的令牌的到期时间设置为30天。
现在需要在User模型中启用Laravel Passport功能。可以通过在User类上使用Passport::use()方法来实现:
//在app/User.php文件中加入下面这段代码 use LaravelPassportHasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; }
在应用程序中使用OAuth2身份验证时,需要通过授权服务器来生成API令牌。为了与授权服务器通信,需要创建客户端。可以通过运行passport:client
命令来创建客户端:
php artisan passport:client --password
运行此命令后,会提示输入应用程序名称,如果不想输入名称,则可以选择使用默认值,回车即可。
运行完成后,将会生成一个client_id和client_secret。client_id和client_secret将用于与授权服务器进行通信。
在创建OAuth2客户端后,需要创建API路由以使授权服务器可以访问API。
//在routes/api.php文件中加入以下代码 Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
在这个例子中,通过使用auth:api
Authorization: Bearer [access_token]
passport:client
ausführen: rrreee
Nachdem Sie diesen Befehl ausgeführt haben, werden Sie aufgefordert, den Namen der Anwendung einzugeben. Wenn Sie den Namen nicht eingeben möchten, können Sie dies tun Wählen Sie die Verwendung des Standardwerts und drücken Sie die Eingabetaste. Nachdem der Vorgang abgeschlossen ist, werden eine client_id und ein client_secret generiert. client_id und client_secret werden für die Kommunikation mit dem Autorisierungsserver verwendet. API-Route erstellen🎜🎜Nachdem Sie den OAuth2-Client erstellt haben, müssen Sie die API-Route erstellen, um die API für den Autorisierungsserver zugänglich zu machen. 🎜rrreee🎜In diesem Beispiel ist die OAuth2-Authentifizierung für die Route erforderlich, die mithilfe der Middlewareauth:api
angegeben wird. Wenn kein gültiges API-Token bereitgestellt wird, gibt diese Route eine 401 Unauthorized HTTP-Antwort zurück. 🎜🎜HTTP-Anfrage zur Authentifizierung senden🎜🎜Sie sind nun bereit, eine Anfrage an die API zu senden und sich mit OAuth2-Anmeldeinformationen zu authentifizieren. 🎜🎜Sie können Tools wie Postman verwenden, um die API zu testen, und die Anfrage muss ein gültiges API-Token enthalten. In Postman ist es möglich, einen Autorisierungsheader in die Anfrage aufzunehmen, zum Beispiel: 🎜rrreee🎜access_token muss durch das zuvor generierte Token ersetzt werden. 🎜🎜Zusammenfassung🎜🎜Laravel Passport ist ein benutzerfreundlicher OAuth2-Server, der die Implementierung der API-Authentifizierung erleichtert, ohne viel Code schreiben zu müssen. In diesem Artikel haben wir die Schritte zur Implementierung der OAuth2-Authentifizierung mit Laravel Passport behandelt und gezeigt, wie man einen OAuth2-Client und API-Routen erstellt und sich über HTTP-Anfragen authentifiziert. Wenn Ihre Anwendung eine API-Authentifizierung verwenden muss, ist Laravel Passport möglicherweise eine der idealen Optionen für Sie. 🎜Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie implementiert man die APIOAuth2-Authentifizierung mit Laravel Passport?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!